Qt4:如何在QTreeView中获取选定的索引

时间:2013-08-20 13:06:32

标签: qt qt4 qtreeview

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

1 个答案:

答案 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]")