【翻译】Qt撤销/回撤框架概述

一、简介

Qt的撤销/回撤框架是基于命令(Command)模式的实现,用于在应用程序中实现撤销/回撤功能。

命令模式基于这样一种思想:应用程序中的所有编辑都是通过创建命令对象的实例来完成的。命令对象将更改应用于文档并存储在命令堆栈中。此外,每个命令都知道如何撤消其更改以使文档恢复到以前的状态。只要应用程序只使用命令对象来更改文档的状态,就可以通过向下遍历堆栈并依次调用undo来撤消一系列命令。也可以通过向上遍历堆栈并对每个命令调用redo来重做一系列命令。

二、类

该框架包括四个类:

  • QUndoCommand是存储在撤消堆栈上的所有命令的基类。 它可以应用回撤/撤消文档中的单个更改。
  • QUndoStack是QUndoCommand对象的列表。它包含在文档上执行的所有命令,并且可以通过撤消或重做来向后或向前滚动文档的状态。
  • QUndoGroup是一组撤消堆栈。 当应用程序包含一个以上的撤消堆栈(通常对于每个打开的文档一个撤消堆栈)时,此功能很有用。 QUndoGroup为组中的所有堆栈提供一对撤销/回撤槽。 它将撤消和回撤请求转发到活动堆栈,该活动堆栈是与用户当前正在编辑的文档关联的堆栈。
  • QUndoView是一个小部件,显示撤消堆栈的内容。 单击视图中的命令会将文档的状态向后或向前滚动到该命令。

三、概念

框架支持以下概念:

清洁状态:用于发信号通知文档何时进入并离开已保存到磁盘的状态。通常用于禁用或启用保存操作,以及更新文档的标题栏。

命令压缩:用于将命令序列压缩为单个命令。例如:在文本编辑器中,可以将在文档中插入单个字符的命令压缩为可插入整个文本部分的单个命令。这些较大的更改对于用户撤消和重做更加方便。

命令宏:一系列命令,所有这些命令都可以在一个步骤中撤消或重做。这些可以简化编写应用程序的任务,因为可以将一组更简单的命令组合成更复杂的命令。例如,可以通过组合一组命令来创建在文档中移动一组选定对象的命令,每个命令都可以移动一个对象。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值