2012-03-28 75 views
0

我怎么能撤消或恢复对QStandarItemModel popuplated一个QTableView中的用户条目?QTableView中QStandardItemModel恢复或取消用户进入

我已连接dataChanged信号与在那里我验证的数据的处理...

connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex))); 

...但如果用户输入错了我想恢复或撤消用户进入以前的值的项目。

我看了一下复归()成员从化QAbstractItemModel继承,但我不明白它是如何工作的。文档说“让模型知道它应该放弃缓存的信息。”但我不确定用户输入的数据是缓存还是已存储在模型中。

无论如何,如果我尝试...

model->revert(); 

...一个错误的用户进入后它不工作。

在此先感谢!

回答

2

退房Qt的undo framework。在文档的介绍说:

Qt的撤销框架是Command Pattern, 实施撤销在应用程序/重做功能的实现。

Command模式是基于在 应用所有的编辑是通过创建命令对象的情况下完成的想法。命令 对象将更改应用于文档并存储在命令 堆栈中。此外,每个命令都知道如何撤销对文档的更改,使文档恢复到之前的状态。只要 应用程序只使用命令对象改变 文档的状态,能够通过遍历 堆栈向下和呼叫撤消依次在每个命令以撤消命令序列。也可以通过向上遍历堆栈 并在每个命令上调用重做来重新执行一系列命令。

+0

谢谢sobingt我会看看它。 – Fracu 2012-04-04 02:45:39

+3

这不是一个答案,而是关于如何找到答案的建议。 – neuronet 2015-03-06 02:07:24