
Установить иконку в строке в TreeView в QML
Добрый день!
За отсутствием в QML нормального диалога открытия файла для Android написал его сам.
Только столкнулся с тем, что не могу установить иконку в строке в TreeView в зависимости от того отображается в строке файл или папка.
Использую TreeView с моделью FolderListModel.
Сейчас это имеет такой вид:
А должна вместо иконки папки в последней строке отображаться иконка файла (ptc_licFile.dat - файл).
Код:
TreeView { id: treeView anchors.fill: parent clip: true headerVisible: false model: FolderListModel { id: fileSystemModel } TableViewColumn { width: 38 delegate: Image { fillMode: Image.PreserveAspectFit source: if (fileSystemModel.isFolder(treeView.currentIndex)) { // Определить это папка или файл return "qrc:/pict/folder.png" } else { return "qrc:/pict/file.png" } } } TableViewColumn { role: "fileName" } }
Как возможно это реализовать?
Если писать if (fileSystemModel.isFolder(treeView.currentIndex)) - не работает как нужно.
treeView.currentIndex - всегда 0, а нужно получить именно индекс текущей записи.

We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Unknown akadamn
- Jan. 24, 2025, 5:14 p.m.
Qt - Test 001. Signals and slots
- Result:84points,
- Rating points4
- Unknown akadamn
- Jan. 24, 2025, 4:22 p.m.
Qt - Test 001. Signals and slots
- Result:42points,
- Rating points-8


Еще столкнулся с такой проблемой в модели для TreeView пишу:
В ответ при компиляции получаю:
ReferenceError: shortcuts is not defined
Я что-то забыл добавить? В документации на диалоги написано только добавить import QtQuick.Dialogs 1.2 ( FileDialog ).
shortcuts не работает и в самом FileDialog.
Добрый день!
По моему, currentIndex показывает текущий выбранный элемент, хотя могу и ошибаться.
Попробуйте получить индекс через styleData, это более гарантированно возвращает правильный индекс.
Что касается shortcuts , то тут думаю, что лучше будет использовать StandardPaths из QML, просто в вашем случае возможно какие-то проблемы из-за самого модуля QtQuick.Controls 2.
Спасибо! Все работает.
Попробовал в диалоге писать:
По console.log() индексы выводит правильные, только isFolder выдает не верный результат.
Может есть другой способ, кроме isFolder?
ммм... я сейчас посмотрел описание метода isFolder и там оказывается принимается значение int в качестве индекса, возможно он ожидает номер строки, а currentIndex возвращал QModelIndex, также как и styleData.index
Попробуйте передать туда номер строки, то есть так
или так
Спасибо!
Корректно отрабатывает вариант
Если использовать
во всех строках каждый раз меняется иконка при переходе по строкам в treeView.