Qt 通知QabstracteModel的子类有关更改

Qt 通知QabstracteModel的子类有关更改,qt,Qt,我有一个问题,关于通知一个模型对它存储引用的其他对象所做的更改 我知道信号dataChanged(),但不知道如何使用它。例如,我的模型存储对某个其他对象的引用(我们称之为myObjPtr)。只有在对模型调用rowCount()、columnCount()、data()和其他方法时,模型才会查询myObjPtr的内容 然后,如果我对myObjPtr的内容做了一些更改,我应该如何通知模型,以便它能够发出带有适当参数的dataChanged()信号?我应该使用模型的setData()方法吗?例如,如

我有一个问题,关于通知一个模型对它存储引用的其他对象所做的更改

我知道信号dataChanged(),但不知道如何使用它。例如,我的模型存储对某个其他对象的引用(我们称之为myObjPtr)。只有在对模型调用rowCount()、columnCount()、data()和其他方法时,模型才会查询myObjPtr的内容

然后,如果我对myObjPtr的内容做了一些更改,我应该如何通知模型,以便它能够发出带有适当参数的dataChanged()信号?我应该使用模型的setData()方法吗?例如,如果我删除或替换myObjPtr中的某些元素,我应该向它传递哪些参数


谢谢。

如果我理解你的要求,那么最简单的方法是
myObjPtr
在更改时发出信号,并在模型中发出
datachange()
信号。请记住,
dataChanged()
信号特定于数据更改的内容。如果无法获得该精度,还可以在模型中调用
reset()
,这会导致更新所有信息。

感谢关于reset()方法的提示。你能更详细地解释一下dataChanged()的情况吗?我在最初的帖子中问过,当我删除/添加/替换myObjPtr中的元素时,哪些参数应该传递给datachange()(myObjPtr实际上有一个树状结构)。我是否应该为“emit dataChanged(topLeft,bottomRight);”调用中使用的这些元素构造QModelIndex的新实例?如果myObjPtr能够提供足够的信息说明发生了什么变化,那么使用dataChanged信号。是的,您应该创建QModelIndex的新实例来执行此操作。确保使用模型的方法创建它们,或者正确地设置索引的父级,以便Qt准确地知道哪些模型项已更改。