我在Windows XP上使用Qt 4.5
和C++
。
基本上我将拥有一个用户输入一些数据的UI。他可以去修改UI中可用的值。用户界面将具有基本的Qt UI元素,如QLineEdit
,QTableWidget
等,
现在,如果用户按下Undo
按钮(或 Ctrl + Z ),则应在相应的UI元素中保留先前的值。
说,如果QLineEdit
包含文本25.现在用户修改为30.现在通过单击撤消,应保留旧值25。
与许多应用程序中通常可用的撤消功能类似。有什么办法吗?
答案 0 :(得分:7)
您可以使用Qt's undo framework。
答案 1 :(得分:5)
实现撤消的典型方法是表示用户完成的每个操作,并存储它们。您还希望能够计算给定操作的反转。
因此,对于插入文本缓冲区,操作将存储插入的文本以及插入发生的位置。然后,逆变为删除,在同一位置和插入文本的大小。
当用户要求应用程序撤消时,只需查看最近存储的操作,然后执行其反向操作。如果你现在不是删除“花费”的动作,也要记住它,你可以通过在动作历史中移动另一种方式来实现重做。
请注意,这是一个抽象的通用解释;正如其他答案所指出的那样,Qt已经有了实施撤销的框架,所以你当然应该先调查一下。
答案 2 :(得分:2)
您可以使用Command Pattern来实现撤消/重做
答案 3 :(得分:1)
QLineEdit具有内置的撤消/重做支持,导出为公共广告位,请检查:http://doc.trolltech.com/4.7/qlineedit.html#undo