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

时间:2015-03-15 18:37:33

标签: 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 )

我知道行可能已经改变了,但是没关系,我想要的是选择相同的行(按索引)。

1 个答案:

答案 0 :(得分:0)

  1. 在重置模型之前,您需要从selectionModel获取列表选择的索引。
  2. 重新加载模型后,您需要设置此列表。
  3. 只有你的模型是理想的,它才会起作用。但是在原始QModelIndex变为无效之后保持原状是危险的。在您的情况下,如果您的模型是普通模式(没有),则可以不是QModelIndex而是QPair< int, int >( row, column )。在任何情况下,您都需要创建自己的机制来识别需要选择的项目。