检测文本/图像/数据文件中未保存更改的三种方法可能是:
每次用户进行更改或保存时都会更新 bool 标志,这会导致大量不必要的更新。
保留原始文件的缓存副本,并在每次需要检查保存操作时比较两者。
根据需要保留所有过去操作和压入/弹出操作的堆栈,从而导致大量额外的内存使用。
一般来说,商业应用程序如何检测是否存在未保存的更改以及每种方法的优点/缺点是什么?我在编写具有特殊保存行为的自定义应用程序时遇到了这个问题,并且想知道是否有已知的最佳实践。
最佳答案
只要您需要撤消/重做系统,您就需要过去操作的堆栈。为了检测文档所处的状态,堆栈的一项被设置为“已保存状态”。当前堆栈节点不是该项,文档已更改。
您可以在 Qt QUndoStack( http://doc.qt.nokia.com/stable/qundostack.html ) 及其 isClean()
和 setClean()
中看到这样的示例
对于命题 1,更新 bool 值不成问题,而且只需要很少的时间。
关于algorithm - 未保存更改检测的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670845/