Qt 的撤销回退事件
日期
作者
版本
2020年12月16日
Mister H
V1.0
前言
在工作中有时候需要撤销和回退(重做)功能,而在网上的资料大多都相同且较复杂,研究了一段时间,终于看出了点门道出来,下面与大家分享一下。
一、QUndoCommand?
Qt 想要实现撤销回退功能,必须通过QUndoCommand去重写undo()(撤销)、redo()(回退)这两个虚函数去实现,下面是Qt 自带帮助文档介绍QUndoCommand。
QUndoCommand类是存储在QUndoStack上的所有命令的基类。
QUndoCommand表示文档上的单个编辑操作;例如,在文本编辑器中插入或删除文本块。QUndoCommand可以使用redo()对文档应用更改,并使用undo()撤销更改。这些函数的实现必须在派生类中提供。
二、重写QUndoCommand类
1.头文件
看到这里,相信大家对Qt 的QUndoCommand有了一个简单的了解,下面写了一个简单的例子,教大家如何重写QUndoCommand去实现的。
(示例 QTableWidget里面单元格撤销与回退)代码如下:
class AddCommand : public QUndoCommand
{
public:
AddCommand(QTableWidget *tableItem,int row, int column, QString content,QUndoCommand *parent = 0);
~AddCommand();
//