使用
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++基本绘图(
画线
,画圆,矩形,
撤销
,
重做
)》编写代码,
功能
包括了
画线
,画圆,矩形,
撤销
,
重做
。代码整洁,规则,易读。应用推荐首选。