当QStandardItemModel itemChanged发出信号时,究竟发生了什么变化

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

要回复问题请先登录注册