我正在学习使用Qt进行应用程序开发,目前已经相当成功地开发了我的应用程序。现在我想为我的应用程序实现撤销/重做功能。关于这个主题的文档提供的信息很少。我甚至尝试从SDK中的两个示例中理解它。但是我很难理解它是如何工作的。 有许多状态需要在我的应用程序中提供此功能。 因此,能否从一般的角度进行解释? 如果已经有解释相同内容的文章,请告知我。那将非常有帮助。 谢谢。
有两个核心类:QUndoCommand和QUndoStack; QUndoCommand是您的命令类的基类。您需要自己实现undo()和redo()方法。 QUndoStack基本上是一个包含QUndoCommand对象的容器,带有一些额外的方法,例如创建QAction,查询当前QUndoCommand的撤销/重做文本等简单功能,这些功能您可以轻松自己实现。 您需要做的是: 实现您的命令。您需要根据您的需求决定如何自定义实现redo/undo方法。类AppendText是一个很好的例子: http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html 为每个文档保留一个QUndoStack实例(如果应用程序中只有一个文档,则仅保留一个实例)。 假设您有一个名为“AppendText”的命令类,并且UI中有一个名为“Append”的按钮。如果单击“Append”按钮,您需要创建一个AppendText命令实例,并调用QUndoStack :: push(appendCmd)。QUndoStack :: push()首先将调用AppendText :: redo(),然后将其放入撤消容器中。 就是这样。