QUndoCommand 的撤销操作其实demo里面已经有了,最近模仿excel做了很多操作,这里总结一下。
QUndoStack是一个栈专门用来装QUndoCommand
QUndoCommand重写他的undo()和redo()就可以进行撤销操作了
同时QUndoStack还给了前进和后退的两个action
QAction *undoAction = m_UndoStack->createUndoAction(this);
QAction *redoAction = m_UndoStack->createRedoAction(this);
undoAction->setIcon(QIcon("://image/back.png")); //选两张撤销 前进的icon图片
redoAction->setIcon(QIcon("://image/forward.png"));
ui->mainToolBar->addAction(undoAction);
ui->mainToolBar->addAction(redoAction);
每个命令最好单独写成一个类
比如,要加一个QTableWidgetItem 文字被编辑以后撤销的功能
editcommand.h
#include <QUndoCommand>
#include <QTableWidgetItem>
class EditCommand : public QUndoCommand
{
public:
explicit EditCommand(QTableWidgetItem* item=0,QString ori_text="",QString new_te