使用 Qt 的时候,有时需要 撤销 修改的代码,但可能回撤过头了,又不知道前一步修改了什么,这时候就比较麻烦了。下面提供2个快捷键,当 撤销 过头时,可恢复 撤销 内容。恢复/向前的快捷键是。 它将撤消和 重做 请求转发到活动堆栈,活动堆栈是与用户当前正在编辑的文档相关联的堆栈。step2:在操作的地方,创建一个Q Undo Command 实例,并且push进Q Undo Stack,此时会自动调用 Command red o()方法;想必大家都有这样的需求:Ctrl+Z、Ctrl+Y进行用户操作的 撤销 和回撤, Qt 框架中有 Qt 's Undo Framework供大家使用。它包含了在文档上执行的所有命令,并可以通过撤消或 重做 它们来前后滚动文档的状态。单击视图中的命令会将文档的状态向后滚动或转发到该命令。 由于没有弄懂 Qt 官方的Q Undo Stack、Q Undo Command 功能 ,网上资料也比较少,所以没有 实现 撤销 重做 功能 ,因此通过其他办法 实现 。 思路:设置一个C++标准容器Vector用来存放,QLabel上的图像每更新一次,即为显示一次图像(执行一次showimage命令),便会往Vector存放一次数据,待到执行 撤销 重做 的操作时,再对Vector进行访问。 mainwindow.h public: // 存储图像的Vector容器 std::vector<std::vector<QI 撤销 堆栈维护已应用于文档的命令堆栈。 使用push()将新命令推送到堆栈上。命令可以使用 undo ()和 red o()来 撤销 重做 ,或者触发create Undo Action()和create Red oAction()返回的操作。 Q Undo Stack跟踪当前命令。这是将在下一次调用 red o()时执行的命令。该命令的索引由index()返回。可以使用setIndex()前滚或回滚已编辑对象的状态。如果堆栈上最上面的命令已经被 这篇博客针对《 Qt +C++基本绘图( 画线 ,画圆,矩形, 撤销 重做 )》编写代码, 功能 包括了 画线 ,画圆,矩形, 撤销 重做 。代码整洁,规则,易读。应用推荐首选。