qt實現撤銷和恢復功能

2021-09-12 13:46:09 字數 857 閱讀 7336

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...

撤銷功能的實現 備忘錄模式(一)

每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以...

撤銷功能的實現 備忘錄模式(一)

每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以...