下面是一个使用Qt的QUndoCommand类的简单示例:
#include <QApplication>
#include <QDebug>
#include <QUndoStack>
#include <QUndoCommand>
// 自定义命令类
class MyUndoCommand : public QUndoCommand
{
public:
MyUndoCommand(const QString& text) : m_text(text) {}
void undo() override {
qDebug() << "撤销命令:" << m_text;
}
void redo() override {
qDebug() << "重做命令:" << m_text;
}
private:
QString m_text;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建撤销栈
QUndoStack undoStack;
// 执行一系列操作并将其添加到撤销栈中
undoStack.push(new MyUndoCommand("第一次操作"));
undoStack.push(new MyUndoCommand("第二次操作"));
// 撤销上一个操作
undoStack.undo();
// 重做被撤销的操作
undoStack.redo();
return a.exec();
}
这个示例展示了如何使用QUndoCommand
和QUndoStack
来实现简单的撤销/重做功能。通过创建自定义的MyUndoCommand
类,并覆盖其中的undo()和redo()函数,可以在每个命令执行或撤销时进行相应的操作。然后,通过将这些命令对象推入QUndoStack
中,可以记录并管理整个操作序列。通过调用undo()和redo()函数,可以撤销和重做这些操作。
内容由零声教学AI助手提供,问题来源于学员提问