Qt下使用类QUndoStack、QCommands、QUndoGroup等类实现保存用户操作。
其实撤销就是在执行undo()函数,前进就是在执行redo()函数。而用户第一次操作的时候其实就已经执行了一遍redo()函数,之后想撤销或者前进在重新调用这俩函数。
QAction *redoAction = m_UndoStack->createRedoAction(this);
undoAction->setIcon(QIcon("undo.png")); //选两张撤销 前进的icon图片
redoAction->setIcon(QIcon("redo.png"));
undoAction->setToolTip("返回");
redoAction->setToolTip("前进");
ui->mainToolBar->insertAction(ui->mainToolBar->actions().value(ui->mainToolBar->actions().size()), undoAction);
ui->mainToolBar->insertAction(undoAction, redoAction);
下面来实现下快捷键:
undoAction->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Z));
redoAction->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Y));
这样功能就几本上实现了。
具体使用细节还需要参照文档慢慢摸索,这里只介绍一个路线。想要具体的例子可以打开你的Qt安装的根目录,打开里面的Demo/undo。这就是做好的例子,最好的学习资料。
本文来源:http://blog.sina.com.cn/s/blog_9da24f3b01015s1h.html