QStandardItemModel中有信号,当项目数据发生变化时会发出信号。 通常我们为这个信号连接一个处理程序,并在处理程序例程中完成所有工作。
此类句柄例程仅获取指向该项目的指针。 使用此指针可以访问项目的数据。 但是,我们不知道究竟发生了什么变化...我们只有更新的价值。
如果项目数据有多个角色,我希望能够准确地获得哪个角色(数据)已被更改以及之前的值是什么。
答案 0 :(得分:5)
通常,QStandardItemModel
用于非常简单的数据建模。如果你想进入像你想象的更高级的东西,你应该研究子类化QAbstractItemModel
或其中一个抽象派生词:Model/View classes
这可能看起来很多,但请使用示例和推荐指南:Model/View programming,Model subclassing,奖励会很棒。
答案 1 :(得分:0)
Qt的标准信号无法做到这一点。我建议为此添加另一个信号。
对于我自己的模型,我通常使用这种方法:我有一个根实例,其中包含指向数据模型所有部分的指针。我模型中的项目使用此根实例发送信号,如
itemChanged(item, attribute, oldValue, newValue)
表示简单属性。列表等也是如此;只有在这里,我有几个信号取决于动作,例如:
itemAdded(list, item, index)
[编辑] QT信号处理非常基础。通常,它只会告诉“某些事情发生了变化”。没有人支持“究竟发生了什么变化?”因为你大部分时间都不需要它。因此,如果您需要这些信息,您必须自己完成。您不能单独使用角色,因为角色必须由项目中的某些内容支持。您可以做的是向项目添加更改信息,并在请求角色时读取更改信息。但这不是“开箱即用”支持的东西。