更新模型时,在QTreeView上保留选择

更新模型时,在QTreeView上保留选择,qt,qtreeview,Qt,Qtreeview,当我在QTreeView中选择一些行并触发重新加载模型的事件时,选择将丢失 tree = QTreeView() tree.setSelectionMode(QAbstractItemView.ExtendedSelection) // Every time an event is triggered, update the model model = QStandardItemModel(rowCount, columnCount) tree.setModel( model ) 我知道行可

当我在QTreeView中选择一些行并触发重新加载模型的事件时,选择将丢失

tree = QTreeView()
tree.setSelectionMode(QAbstractItemView.ExtendedSelection)

// Every time an event is triggered, update the model
model = QStandardItemModel(rowCount, columnCount)
tree.setModel( model )
我知道行可能已更改,但这并不重要,我只想选择相同的行(按索引)

  • 在重置模型之前,您需要从selectionModel中获取列表所选索引
  • 在重新加载模型后,您需要设置此列表
  • 只有当您的模型相同时,它才会起作用。但在失效后保留原始
    QModelIndex
    是危险的。在您的情况下,如果您的模型是普通的(没有),您可以不保留
    QModelIndex
    ,而是保留
    QPair(行,列)
    。在任何情况下,您都需要创建自己的机制来确定需要选择哪些项目