使用QUndoCommand

时间:2018-09-20 22:05:34

标签: python qt model-view-controller pyqt undo-redo

因此,我正在尝试同步大型多页PyQt GUI并利用Qt的撤消功能。我还没有办法只序列化对整体状态的更改,因此,每当用户进行任何交互时,我都将确定全局状态,并将新旧状态存储到QUndoCommand中。我的理解是,该命令实际上需要执行任何您想要进行UI交互的操作,以便在撤消或重做时,您得到相同的行为。

我要弄清楚的是,当用户(例如)检查页面上的复选框对全局GUI状态和本地页面状态有影响时,我应该如何在GUI上传播更改? QUndoCommand句柄是否应该告诉父GUI新的全局状态,然后父GUI告诉所有页面(包括当前页面)新状态?我应该忽略发出更改的页面并在本地处理本地页面UI更新吗?如果我根据更新的全局状态更新当前页面的UI,是否应该忽略触发更新的复选框?在尝试更新每个UI元素以使其与全局状态匹配之前,是否应该检查每个UI元素是否“正确”?我是否应该在所有内容上加上时间戳,以便GUI不会尝试将滑块设置为毫秒前的值(例如,如果用户正在主动滑动它)?

在某些方面,我认为这是一个简单的同步问题。如果我尝试将3个复选框链接到相同的True / False变量,那么我将遇到相同的基本问题,只是QUndoCommand存储更改的复杂性。

有什么有用的计算机科学哲学可以使我免于过分考虑?

0 个答案:

没有答案