我的计划包括多个QLineEdit在我的QMainWindow.用户可以更改任何文本QLineEdit.目前,我可以通过默认实现为每个选择时执行undo-redo.但是我想添加功能,以便在按下undo*redo*按钮时,相应地编辑后执行undo/redo.即说L1,L2等是我的.然后用户完成以下操作:1.L2->文本添加... 5. L5->文本添加... 9. L3->文本删除10. L5->撤消(通过选择L5然后" ctrl + z")QLineEditQLineEditQLineEditQLineEdit
现在,当用户按下撤销/重做按钮时,如下所示:1.撤消 - >应撤消在步骤10中执行的撤消2.撤消 - >应撤消在步骤9中删除的文本3.重做 - >应重做在步骤中删除的文本9 4.撤消 - >应撤消步骤8完成的操作
目前,我可以模糊地想到一种主导历史的机制,但这将是相当繁琐的.所以我想知道Qt是否为我提供了任何内置功能?谢谢.
And*_*ter 12
Qt提供了一个Undo/Redo框架.
您基本上QUndoCommand为每个要进行可撤销/可重做的操作实现一个派生命令,然后将它们推送到QUndoStack.之后,可以通过调用上的相应插槽来撤消和重做命令QUndoStack.
请注意,在堆栈上按下命令时,它会自动重做,这意味着第一次执行.有时这不是您想要的,因为命令实际上可能已经执行过 - 您需要在命令的实现中考虑这一点.
| 归档时间: |
|
| 查看次数: |
4960 次 |
| 最近记录: |