我正在基于Qt5的图形应用程序中实现撤消/重做功能,使用QUndoCommand
具有良好的mergeWith()功能:例如,如果用户反复单击字体大小增加按钮我的应用程序,而不是在撤消列表中创建大量命令,它只是更新QUndoStack
上的一个命令。因此,单个撤消将恢复为原始字体大小。
这很好,但有时候我不想自动合并命令。例如,如果我将项目拖动到新位置并将其拖放到那里,则将同一项目拖动到另一个位置:我的应用程序应创建2个移动命令,而不是将它们合并为一个命令。
所以,这里是我认为创建逻辑中断的事件列表,即使下一个命令更改同一对象的相同属性,用户也希望命令不与下一个命令合并:
正如我的列表中的问号所示,我不确定在什么情况下抑制合并命令。所以我的问题是,这方面有什么最佳做法吗?我在哪里可以找到它们?
答案 0 :(得分:0)
FWIW,我没有找到任何最佳实践,但对于我的软件,我抑制了焦点更改的合并(在我的应用程序中也发生在图形部分的鼠标释放上)。另外,对于输入,如果输入位置以预期的方式改变以删除或键入1个字符,并且用户在删除字符和键入字符之间切换,则禁止合并。
我没有打扰计时器,也没有打字的最大字符。