Найти - Пользователи
Полная версия: PyQt4: undo, redo. Как это делается?
Начало » GUI » PyQt4: undo, redo. Как это делается?
1
leonid_10
Собственно, как создаётся механизм отмены действия и возврата к нему в PyQt4?
fata1ex
QUndoStack, may help.
reclosedev
Все есть в документации 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(...))
leonid_10
Спасибо всем ответившим!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB