QTreeView上的setModel是否使以前的模型索引无效?

QTreeView上的setModel是否使以前的模型索引无效?,qt,qtreeview,qmodelindex,Qt,Qtreeview,Qmodelindex,我有一个QTreeView,我已将自定义模型附着到该QTreeView 在我的代码中,我执行以下操作: treeView->setModel(modelPtr) ... ... ... treeView->setModel(modelPtr) 我可以相信,在第二次调用setModel()后,模型索引将与第一次调用setModel()后保持相同吗 我在某个地方读到,它们不可靠,可以改变 a) 请确认此理解是否正确 请本论坛的专家确认并添加与模型索引何时失效相关的任何其他重要信

我有一个QTreeView,我已将自定义模型附着到该QTreeView

在我的代码中,我执行以下操作:

treeView->setModel(modelPtr)

...

...

...

treeView->setModel(modelPtr)
我可以相信,在第二次调用
setModel()
后,模型索引将与第一次调用
setModel()
后保持相同吗

我在某个地方读到,它们不可靠,可以改变

a) 请确认此理解是否正确

请本论坛的专家确认并添加与模型索引何时失效相关的任何其他重要信息

(b) 假设我已将树视图附着到模型

_dtreeView->setModel(modelPtr)
然后,我将其附加到代理模型:

_dtreeView->setModel(_proxyModelPtr)
即使将视图设置为代理模型,由
modelPtr
表示的模型中项目的模型索引是否仍保持不变

我认为它将保持不变,因为视图已更改为代理模型,但实际模型没有更改


请专家确认。

保存
QModelIndex
不安全。文件说:

注意:应立即使用模型索引,然后丢弃。你 调用模型后不应依赖索引保持有效 更改模型结构或删除项的函数。如果 您需要随时间保留模型索引,请使用QPersistentModelIndex

见和

您可以存储
QPersistentModelIndex
。如果模型仍然有效(未删除),即使更改视图的模型,也可以依赖
QPersistentModelIndex
。索引与模型相关,不依赖于视图(可以在更多视图上显示相同的模型)