从数据项创建QModelIndex

时间:2015-08-15 00:33:56

标签: qt qtreeview qabstractitemmodel qmodelindex

我正在寻找一种从模型中的特定数据片段创建QModelIndex的方法。我可以通过以下方式从QModelIndex转到数据项:

CustomData *data = static_cast<CustomData *>(modelIndex.internalPointer());

但我正在寻找一个反函数:

QModelIndex *index = createIndex(data); // ??

我在我的数据之间实现了非常类似于简单树模型示例(http://doc.qt.io/qt-5/qtwidgets-itemviews-simpletreemodel-example.html)的链接。我的视图正确显示数据,但存在相当大的滞后。我想发出dataChanged(QModelIndex,QModelIndex)来立即查看视图的更新,因为我认为滞后是由于等待视图更新。

在链接的示例中,我试图从TreeItem到QTreeModel中的相应索引。

1 个答案:

答案 0 :(得分:-1)

你不能使用传统的标记,因为在模型/视图编程中他们不会留下来,除非你使用:

QPersistentModelIndex

http://doc.qt.io/qt-5/qpersistentmodelindex.html#details

此外,Model / View编程还引入了许多新的范例。关于它的文档和使用它有一个学习曲线...阅读几次,并尝试使用与Qt Creator捆绑使用它们的示例。

有关使用QPersistentModelIndex

的更多信息

http://doc.qt.io/qt-5/model-view-programming.html#using-model-indexes

  

模型索引提供对信息的临时引用,   并可用于通过模型检索或修改数据。自模特   可能会不时重组其内部结构,模型   索引可能变得无效,不应存储。如果是长期的   需要引用一条信息,一个持久的模型   必须创建索引。这提供了对信息的参考   该模型保持最新。提供临时模型索引   由QModelIndex类和持久性模型索引提供   QPersistentModelIndex班。

     

获取与数据项对应的模型索引,三个   必须为模型指定属性:行号,列   number,以及父项的模型索引......