QTableView QStandardItemModel恢复或撤消用户输入

QTableView QStandardItemModel revert or undo user entry

本文关键字:用户 输入 撤消 QStandardItemModel 恢复 QTableView      更新时间:2023-10-16

如何撤消或还原QStandardItemModel弹出的QTableView上的用户条目?

我已经将dataChanged信号与一个处理程序连接,在该处理程序中我验证数据。。。

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

但在用户输入错误的情况下,我想将用户输入恢复或撤消为项目的前一个值。

我读过从QAbstractItemModel继承的revert()成员,但我不明白它是如何工作的。文档中说"让模型知道它应该丢弃缓存的信息。"但我不确定用户输入的数据是缓存的还是已经存储在模型上。

不管怎样,如果我尝试。。。

model->revert();

在用户输入错误后,它将不起作用。

提前感谢!

查看Qt的undo框架。文件中的介绍说:

Qt的Undo框架是命令模式的一种实现,用于在应用程序中实现撤消/重做功能。

命令模式基于这样一种思想,即应用程序是通过创建命令对象的实例来完成的。命令对象将更改应用于文档并存储在命令中堆栈此外,每个命令都知道如何撤消对将文档恢复到以前的状态。只要应用程序仅使用命令对象来更改文档中,可以通过遍历堆栈向下,依次对每个命令调用undo。是的也可以通过遍历堆栈来重做一系列命令向上,并对每个命令调用redo。