我有一个程序,它有一个目录树,可以打开这些目录中的文件子树。我的视图中有两列:
- 树本身
- 旁边有一个文本列,说明文件是否被选中
- 用户可以一次选择多个文件。用户完成选择后,当他们点击“确定”按钮时,文本应更改为相应文件旁边的“已选择”。
- 问题是,我无法想办法告诉它哪些索引改变了文本。我试过了selectionModel()->selectedIndexes() (and selectedRows)
,但是这些都没有办法让我得到原始索引。我如何从整个树中获取原始文件?
答案 0 :(得分:2)
正如mumush所提到的,Andrea的回答仅适用于QTreeWidget,而不是QTreeView。 QTreeView没有selectedItems方法,因此您必须使用selectedIndexes,它将返回QModelIndex个对象的列表。
您可以使用这些对象来访问和更新树模型中的项目,如下所示:
# Get the fields that are currently selected and loop over them
indexes = tree.selectedIndexes()
for index in indexes:
# We only care about the "Selected" column.
if index.column() != 1:
continue
# Change the tree value.
treeModel.setData(index, "[SELECTED]")