qt撤销与回退_Qt实现用户操作保存(撤销功能) | 求索阁

本文介绍了如何在Qt中利用QUndoStack、QCommands和QUndoGroup类来实现用户操作的撤销与回退功能。通过创建自定义命令类、管理undoStack以及设置undo和redo操作的快捷键,详细阐述了实现过程,并提供了一个对话框显示与隐藏的示例。读者可以参考Qt自带的Demo/undo项目进一步学习。
摘要由CSDN通过智能技术生成

Qt下使用类QUndoStack、QCommands、QUndoGroup等类实现保存用户操作。

保存用户的原理比较容易理解。之前我们所写的用户操作,如鼠标点击后的响应,都是直接写在mouseEvent下的,不能实现保存。现在使用QCommands类将用户操作进行封装,将需要的参数保存起来,在将这些commands放到undoStack中,由undoStack管理这些用户操作的加入、清除、执行下一个等功能。

下面讲讲具体实现步骤:

以用户操作一个dialog消失,与出现的功能为例.

1、在主窗口中添加一个QUndoStack成员变量,并在初始化的时候初始化。

mainwindow.h下:

QUndoStack *m_UndoStack;

mainwindow::mainwindow()下:

m_UndoStack = new QUndoStack(this);

2、剪切掉原来你所写的响应,把响应换成

m_UndoStack->push(new myCommands(dialog,oldT,newT));

//这里oldT,newT分别表示之前窗口的状态,和现在你需要的状态。

3、继承一个QCommands类,重载它的构造函数、undo()、redo()这三个函数。

构造函数的参数要有实现用户操作后响应,需要的所有参数。

myCommands::myCommands(QDialog *dialg,bool oldT,bool newT)

{

m_Dialog = dialog; //将这些数据放在成员变量里

m_oldT = oldT;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值