qt撤销与回退_请教qt中用c++编绘图板的恢复与撤销功能该如何实现?

本文介绍了在QT中使用QUndoCommand和QUndoStack实现绘图板的撤销与回退功能。通过创建自定义的QUndoCommand类来记录和恢复绘图动作,QUndoStack作为控制器管理这些动作。在CanvasView中监听事件,当添加三角形对象后,将动作推送到撤销栈。详细流程见QT的‘Qt Undo Framework’文档。
摘要由CSDN通过智能技术生成

展开全部

是指Redo和Undo吗?

如果是, 那么请注意两个核心类QUndoCommand 和 QUndoStack

QUndoStack

可以看作是是控制器

它的作用是提供动作的存储62616964757a686964616fe59b9ee7ad9431333335346136(Do), 控制动作恢复(Redo), 撤销(Undo), 甚至复杂的动作合并(将同样的Command合成为一个), 动作宏(通过描述符来描述一些列动作), 等等

而QUndoCommand

可以看作是一种动作, 它保存了你动作的状态, 同时也提供在恢复和撤销时的行为

(例如, 当用户拖动从开始到结束, 可以把整个行为看成"拖动"动作, 它存储了拖动的坐标)

当然, 动作的粒度可以你自己来定义, 也可以把上述例子分成多个动作(拖动开始, 拖动以及拖动结束)

那么, 模型就很简单了, 你看, 你只需要实现对应的QUndoCommand即可class DrawTriangleCommand : public QUndoCommand

{

private:

SceneController *_controller;   //! 你的绘图控制器

TriangleObject *_object;        //! 三角形对象

public:

virtual void undo() override

{

_controller->remove(_object);

_controller->askForUpdate();

}

virtual void redo() override

{

_controller->add(_object);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值