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