3

我有一个程序,它有一个目录树,可以打开这些目录中的文件子树。在我的视图中有两列: - 树本身 - 以及它旁边的一个文本列,说明文件是否被选中 - 用户可以一次选择多个文件。用户完成选择后,当他们点击“确定”按钮时,相应文件旁边的文本应更改为“已选择”。- 问题是,我想不出一种方法来告诉它要更改哪些索引的文本。我试过selectionModel()->selectedIndexes() (and selectedRows)了,但据我所知,这些都没有办法获得原始索引。我怎样才能从整个树中获得原件?

4

1 回答 1

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]")
于 2014-10-10T00:01:13.617 回答