我有一个带有复杂对话框的便携式应用程序,该对话框显示用户选项卡,其中包含许多(超过50个)可以更改的不同设置值。用户可以设置值,然后按“确定”或“取消”。
如果用户按OK,我希望应用程序将更改存储在模型中,但如果用户按下取消,我希望应用程序忘记所做的任何更改。
将值输入和输出对话框的最佳策略是什么?
我知道如何使用QDataWidgetMapper将模型直接映射到窗口小部件,但是如果用户单击取消则会出现问题 - 我必须撤消所做的所有更改。另一方面,如果我创建一个特定于对话框的对象来存储与模型分开的值,那么我必须将模型中的所有值复制到对象中,然后如果用户按下OK则再将它们复制出来。有什么想法吗?
答案 0 :(得分:2)
QDataWidgetMapper
非常适合这种情况,它有两个submit policies。 AutoSubmit
和ManualSubmit
。在您的情况下,您可以使用ManualSubmit
并在用户按下submit()
时显式调用OK
,或在用户按下Cancel
时完全不提交。