6

我正在学习将 Qt 用于我的应用程序开发,并且我在开发我的应用程序方面非常成功。现在我想为我的应用程序实现撤消重做功能。该主题的文档几乎没有信息。我什至尝试从 SDK 中的 2 个示例中理解。但我很难理解它是如何工作的。有人可以麻烦解释一下如何实现它吗?我想为其提供此功能的应用程序中有各种状态。那么可以从一般的角度进行解释吗?如果互联网上已经有文章解释了相同的内容,请通知我。那将非常有帮助。谢谢你。

4

1 回答 1

9

有 2 个核心类:QUndoCommandQUndoStack

  1. QUndoCommand 是命令类的基类。您必须自己实现 undo() 和 redo()。
  2. QUndoStack 基本上是 QUndoCommand 对象的容器,具有额外的方法,例如创建 QAction、查询当前 QUndoCommand 的撤消/重做文本(您可以轻松实现的简单功能)

你需要做的是:

  1. 执行您的命令。您需要根据需要自行决定如何实现重做/撤消。AppendText 类是一个很好的例子:http: //qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
  2. 为每个文档保留一个 QUndoStack 实例(如果应用程序中只有一个文档,则为一个实例)。
  3. 假设您在 UI 中有一个“AppendText”命令类和一个“Append”按钮。如果点击“追加”按钮,则需要创建一个AppendText 命令实例,并调用QUndoStack::push(appendCmd)。QUndoStack::push() 会先调用 AppendText::redo(),然后放入容器中进行撤销。

就是这样。

于 2013-03-03T14:16:26.250 回答