【问题标题】:QTableView QStandardItemModel revert or undo user entryQTableView QStandardItemModel 恢复或撤消用户输入
【发布时间】:2015-03-02 14:13:22
【问题描述】:

如何撤消或恢复 QStdarItemModel 填充的 QTableView 上的用户条目?

我已将 dataChanged 信号与我验证数据的处理程序连接...

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

...但是如果用户输入错误,我想将用户输入恢复或撤消到项目的先前值。

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

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

model->revert();

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

提前致谢!

【问题讨论】:

    标签: c++ qt qabstractitemmodel qstandarditemmodel


    【解决方案1】:

    查看 Qt 的 undo framework。文档中的介绍说:

    Qt 的 Undo Framework 是 Command Pattern 的一个实现, 用于在应用程序中实现撤消/重做功能。

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

    【讨论】:

    • 谢谢sobingt,我去看看。
    • 这与其说是一个答案,不如说是一个关于如何找到答案的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多