Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2012 13:30:26

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4: undo, redo. Как это делается?

Собственно, как создаётся механизм отмены действия и возврата к нему в PyQt4?



Офлайн

#2 Май 13, 2012 13:46:04

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

PyQt4: undo, redo. Как это делается?

QUndoStack, may help.



Отредактировано fata1ex (Май 13, 2012 13:46:25)

Офлайн

#3 Май 13, 2012 13:49:07

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4: undo, redo. Как это делается?

Все есть в документации Qt - http://doc.qt.nokia.com/4.7-snapshot/qundo.html

Вкратце.
На каждое действие создается класс унаследованный от QUndoCommand, в котором нужно переопределить методы redo и undo.

Код из одного проекта:

class RotatePointer(QUndoCommand):
 
    def __init__(self, item, oldangle, newangle):
        QUndoCommand.__init__(self, tr("Rotate viewpointer"))
        self.item = item
        self.newangle = newangle
        self.oldangle = oldangle
 
    def redo(self, *args, **kwargs):
        self.item.setRotation(self.newangle)
 
    def undo(self, *args, **kwargs):
        self.item.setRotation(self.oldangle)

Управляется все через QUndoStack()
self.undo_stack = QUndoStack()
...
self.undo_stack.push(SomeCommand(...))

Отредактировано reclosedev (Май 13, 2012 13:56:02)

Офлайн

#4 Май 13, 2012 17:04:07

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4: undo, redo. Как это делается?

Спасибо всем ответившим!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version