2009-12-08 137 views
2

我有一个关于通知模型的一些其他对象存储引用的问题。通知QAbstractItemModel的子类有关更改

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

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

谢谢。

回答

3

如果我明白你在问什么,那么最简单的方法是myObjPtr发出一个信号,它在发生改变时发出,并在模型中发出dataChanged()信号。请记住,dataChanged()信号是特定数据更改的。如果无法达到这种精度,您也可以在模型中调用reset(),这会导致所有信息都被更新。

+0

感谢您对reset()方法的提示。 你能否详细解释dataChanged()的情况?当我删除/添加/替换myObjPtr中的元素时(myObjPtr实际上具有树形结构),我在原始帖子中询问应将哪些参数传递给dataChanged()。我应该为调用'emit dataChanged(topLeft,bottomRight);'中使用的元素构造QModelIndex的新实例吗? –

+2

如果myObjPtr可以提供有关已更改内容的足够信息,请使用dataChanged信号。是的,您应该创建QModelIndex的新实例来执行此操作。确保使用模型的方法创建它们,或者正确设置索引的父级,以便Qt确切知道哪些模型项目已更改。 –

相关问题