Qt4: Как получить выбранный индекс в QTreeView

У меня есть программа, которая имеет дерево каталогов, которые открываются в поддеревья файлов внутри этих каталогов. На мой взгляд, есть два столбца: - само дерево - и рядом с ним текстовый столбец, в котором указано, был ли выбран файл. - Пользователь может выбрать несколько файлов одновременно. После того, как пользователь сделал выбор, когда он нажал кнопку "ОК", текст должен измениться на "выбранный" рядом с соответствующими файлами. - Проблема в том, что я не могу придумать, как сказать, по каким показателям изменить текст. Я старался selectionModel()->selectedIndexes() (and selectedRows) но ни у одного из них нет способа получить исходный индекс, насколько я могу судить. Как я могу получить оригинал из общего дерева?

1 ответ

Как упоминает mumush, ответ Андреа относится только к 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]")
Другие вопросы по тегам