PyQt5 撤销功能学习 QUndoCommand以及QUndoStack
前言
开发Qt过程中需要实现撤销和重做功能,正好Qt有自带的QUndoCommand类
记录一下学习过程,如有问题可以指正讨论
从官方文档得知,Qt的撤销框架使用命令模式实现,具体什么是命令模式可以移步
Python设计模式之命令模式
一、QUndoCommand类
从官方文档得知,QUndoCommand是存储在撤消堆栈上的所有命令的基类。它可以应用(重做)或撤销文档中的单个更改。官方文档见
一个简单的撤销操作只需要其中的undo,redo,setText等操作
下面写一个学习过程中的例子来说明QUndoCommand类的使用
from PyQt5.QtWidgets import QUndoCommand, QUndoStack
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
self.item = []
class BuyItem(QUndoCommand):
def __init__(self, student, item):
super().__init__()
self.student = student
self.item = item
self.setText('购买' + item)
# super().__init__()
def redo(self) -> None:
print(self.student.name + '购买了' + self.item)
self.student.item.append