如何撤消或还原QStandardItemModel弹出的QTableView上的用户条目?
我已经将dataChanged信号与一个处理程序连接,在该处理程序中我验证数据。。。
connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex)));
但在用户输入错误的情况下,我想将用户输入恢复或撤消为项目的前一个值。
我读过从QAbstractItemModel继承的revert()成员,但我不明白它是如何工作的。文档中说"让模型知道它应该丢弃缓存的信息。"但我不确定用户输入的数据是缓存的还是已经存储在模型上。
不管怎样,如果我尝试。。。
model->revert();
在用户输入错误后,它将不起作用。
提前感谢!
查看Qt的undo框架。文件中的介绍说:
Qt的Undo框架是命令模式的一种实现,用于在应用程序中实现撤消/重做功能。
命令模式基于这样一种思想,即应用程序是通过创建命令对象的实例来完成的。命令对象将更改应用于文档并存储在命令中堆栈此外,每个命令都知道如何撤消对将文档恢复到以前的状态。只要应用程序仅使用命令对象来更改文档中,可以通过遍历堆栈向下,依次对每个命令调用undo。是的也可以通过遍历堆栈来重做一系列命令向上,并对每个命令调用redo。