QPersistentModelIndexes
是(行,列,父)对项目的引用,当被引用的项目在模型内移动时会自动更新,这与常规的QModelIndex
.
例如,如果您插入一行,则位于插入点下方的所有现有持久索引的row
属性都将增加 1。
例如,您可能不会直接使用它们,但可以使用它们QTreeView
来跟踪扩展项目和选定项目。
对于要更新的这些持久索引,您必须在添加新记录时调用函数QAbstractitemModel::beginInsertRows()
并endInsertRows()
围绕实际的行插入。
有关详细信息,请参阅关于子类化模型类部分的末尾:http: //doc.trolltech.com/latest/qabstractitemmodel.html#subclassing
我找到了这个方法QAbstractItemModel::persistentIndexList
,我想知道它应该返回什么索引。他们都是 ?
此方法是否应该返回当前在 TreeView 中可见的所有节点?
该方法仅返回为其QPersistentIndexModel
创建了 a 且仍在范围内的索引(作为局部变量、类成员或在 aQList<QPersistentIndexModel>
中)。
扩展或选定的节点当前不一定可见,因此您不能(也不应该)假设这些持久索引的用途。
你只需要让它们保持更新,你只需要persistentIndexList
在模型中使用大的变化,比如排序(参见QTreeWidget
内部模型:(QTreeModel::ensureSorted
链接)),对于较小的增量变化,你有所有的beginXxxRows/beginXxxColumns
和endXxxRows/endXxxColumns
方法。