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):
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
C 簡單文字編輯的撤銷恢復功能實現
本渣菜鳥一枚,看了網上很多關於命令模式的文章,不過要麼 太多看不懂,要麼不完整 所以我自己試著寫了個簡單的實現,用來實現文字框的撤銷恢復功能。public class cmd public void execute string command else public void undo publi...
撤銷功能的實現 備忘錄模式(一)
每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以...
撤銷功能的實現 備忘錄模式(一)
每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以...