gpt4 book ai didi

c++ - 在 Qt 中实现撤消 - 重做功能?

转载 作者:可可西里 更新时间:2023-11-01 17:22:50 28 4
gpt4 key购买 nike

我的程序由 QMainWindow 中的多个 QLineEdit 组成。用户可以更改任何 QLineEdit 中的文本。 Currently I can perform undo-redo by the default implementation for each QLineEdit when the respective QLineEdit is selected.但是我想添加功能,以便当我的撤消 *redo* 按钮被按下时,编辑的QLineEdit 相应地执行撤消/重做。即说 L1、L2 等是我的 QLineEdit。然后由用户完成以下操作:1. L2->添加文字...5. L5->添加文字...9. L3->文本删除10. L5->撤消(选择 L5,然后选择“ctrl + z”)

现在当用户按下撤销/重做按钮时如下:1. 撤消 -> 应该撤消在第 10 步中执行的撤消2. Undo -> 应该撤销在第9步中删除的文本3.重做->应该重做步骤9中删除的文本4. Undo -> 应该撤销第8步做的操作

目前我可以模糊地想到一种将历史记录主线化的机制,但这会非常乏味。所以我想知道 Qt 是否为我提供了执行此操作的任何内置功能?谢谢。

最佳答案

Qt 提供了一个 Undo/Redo框架。

你基本上实现了一个命令,派生自QUndoCommand , 对于每个你想要撤销/重做的操作,然后将它们推送到 QUndoStack .稍后,可以通过调用 QUndoStack 上的相应插槽来撤消和重做命令。

请注意,当将命令压入堆栈时,它会自动重做,即第一次执行。有时这不是您想要的,因为该命令实际上可能已经执行 - 您需要在执行命令时考虑这一点。

关于c++ - 在 Qt 中实现撤消 - 重做功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998836/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com