qt实现撤销和恢复功能

from PyQt5.QtWidgets import QUndoStack, QUndoCommand


class Test(object):

    def __init__(self):
        super().__init__()
        self.undoStack = QUndoStack() # 存放命令的栈
        self.undoStack.push(Command()) # 调用push的时候,就会自动调用一次redo方法


class Command(QUndoCommand): # 具体的命令,需要重新实现它的redo和undo方法以实现重做和撤销操作

    def __init__(self):
        super().__init__()
        self.m_list = [1, 2]
        print('原列表', self.m_list)

    # 重做
    def redo(self):
        self.m_list.append(3)
        print('重做后', self.m_list)

    # 撤销
    def undo(self):
        del self.m_list[-1]
        print('撤销后', self.m_list)


test = Test()
test.undoStack.undo() # 实现撤销操作
test.undoStack.redo() # 实现重做操作
原列表 [1, 2]
重做后 [1, 2, 3]
撤销后 [1, 2]
重做后 [1, 2, 3]

Process finished with exit code 0

你可能感兴趣的:(qt实现撤销和恢复功能)