QML TreeView: как убрать дефолтные кнопки сворачивания
Есть рабочий TreeView, сворачивается, разворачивается, показывает все верно. Вопрос по кастомизации внешнего вида. Дефолтный TreeView добавляет к элементам, у которых есть дочерние, треугольные кнопки (свернуть/развернуть). Как их заменить на свои иконки?
Что пробовал:
TableViewColumn {
width: 100
delegate: Image {
fillMode: Image.PreserveAspectFit
source: sourceFunc()
function sourceFunc() {
if (!treeView.isExpanded( styleData.index )) {
return "qrc:/img/images/icon_opened.svg"
} else {
return "qrc:/img/images/icon_closed.svg"
}
}
}
}
Иконки рисуются (правда только закрытая, почему-то), но и дефолтная треугольная кнопка тоже. Подскажите пожалуйста, куда воевать, я совершенно без понятия.
И прошу еще пояснить как правильно использовать rowDelegate и itemDelegate у TreeView.
Спасибо
Ответы (1 шт):
Разобрался, изучив как следует исходники TreeView.
Треугольная кнопка оказалась вовсе и не кнопкой, а символом юникода. Чтобы назначить собственную иконку, нужно в TreeView определить свойство style, внутри которого определить свой branchDelegate:
style: TreeViewStyle {
branchDelegate: Item {
width: indentation
height: 16
Image {
id: icon
visible: styleData.column === 0 && styleData.hasChildren
source: styleData.isExpanded ? "qrc:/img/images/folder_opened.svg"
: "qrc:/img/images/folder_closed.svg"
anchors.centerIn: parent
anchors.verticalCenterOffset: 2
}
}
}