QTableView QStandardItemModel恢复或撤消用户输入
QTableView QStandardItemModel revert or undo user entry
如何撤消或还原QStandardItemModel弹出的QTableView上的用户条目?
我已经将dataChanged信号与一个处理程序连接,在该处理程序中我验证数据。。。
connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex)));
但在用户输入错误的情况下,我想将用户输入恢复或撤消为项目的前一个值。
我读过从QAbstractItemModel继承的revert()成员,但我不明白它是如何工作的。文档中说"让模型知道它应该丢弃缓存的信息。"但我不确定用户输入的数据是缓存的还是已经存储在模型上。
不管怎样,如果我尝试。。。
model->revert();
在用户输入错误后,它将不起作用。
提前感谢!
查看Qt的undo框架。文件中的介绍说:
Qt的Undo框架是命令模式的一种实现,用于在应用程序中实现撤消/重做功能。
命令模式基于这样一种思想,即应用程序是通过创建命令对象的实例来完成的。命令对象将更改应用于文档并存储在命令中堆栈此外,每个命令都知道如何撤消对将文档恢复到以前的状态。只要应用程序仅使用命令对象来更改文档中,可以通过遍历堆栈向下,依次对每个命令调用undo。是的也可以通过遍历堆栈来重做一系列命令向上,并对每个命令调用redo。
相关文章:
- C++如何通过用户输入删除列表元素
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 打印时有二叉树问题.用户输入不打印任何内容
- C ++奇怪的数组由用户输入
- 如何允许大写和小写用户输入?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 如何使用用户输入变量制作二维数组?
- 用户输入字符串的文件附加问题..C++
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?