Тип QML TreeView
Обеспечивает представление дерева со скроллбарами, стилизацией и секциями заголовка. Подробнее...
| Заявление импорта: | import QtQuick.Controls 1.4 |
| С тех пор: | Qt 5.5 |
| Наследует: |
Свойства
- alternatingRowColors : bool
- backgroundVisible : bool
- columnCount : int
- contentFooter : Component
- contentHeader : Component
- currentIndex : QModelIndex
- headerDelegate : Component
- headerVisible : bool
- itemDelegate : Component
- model : QAbstractItemModel
- rootIndex : QModelIndex
- rowDelegate : Component
-
section
- section.property : string
- section.criteria : перечисление
- section.delegate : Component
- section.labelPositioning : перечисление
- selection : ItemSelectionModel
- selectionMode : int
- sortIndicatorColumn : int
- sortIndicatorOrder : int
- sortIndicatorVisible : bool
Сигналы
- activated(QModelIndex index)
- clicked(QModelIndex index)
- collapsed(QModelIndex index)
- doubleClicked(QModelIndex index)
- expanded(QModelIndex index)
- pressAndHold(QModelIndex index)
Методы
- TableViewColumn addColumn(object column)
- void collapse(QModelIndex index)
- void expand(QModelIndex index)
- TableViewColumn getColumn(int index)
- QModelIndex indexAt(int x, int y)
- TableViewColumn insertColumn(int index, object column)
- bool isExpanded(QModelIndex index)
- void moveColumn(int from, int to)
- void removeColumn(int index)
- void resizeColumnsToContents()
Подробное описание
A TreeView реализует древовидное представление элементов из модели.
Данные для каждой строки в TreeView предоставляются моделью. TreeView принимает модели, производные от класса QAbstractItemModel.
Вы предоставляете заголовок и размер столбца, добавив TableViewColumn, как показано ниже.
TreeView {
TableViewColumn {
title: "Name"
role: "fileName"
width: 300
}
TableViewColumn {
title: "Permissions"
role: "filePermissions"
width: 100
}
model: fileSystemModel
} Секции заголовка прикрепляются к значениям в model, определяя роль модели, к которой они прикрепляются. Затем каждое свойство в модели будет отображаться в соответствующем столбце.
Вы можете настроить вид, переопределив свойства itemDelegate, rowDelegate или headerDelegate.
Сам вид не предоставляет сортировку. Это необходимо делать в самой модели. Однако вы можете обеспечить сортировку в модели и включить индикаторы сортировки в заголовках.
- int sortIndicatorColumn - Индекс текущего столбца сортировки
- bool sortIndicatorVisible - Включить ли индикатор сортировки
- enum sortIndicatorOrder - Qt.AscendingOrder или Qt.DescendingOrder в зависимости от состояния
Вы можете создать пользовательский вид для TreeView, назначив TreeViewStyle.
Документация свойств
alternatingRowColors : bool
Это свойство установлено в true, если вид чередует цвет строк. Значение по умолчанию — true.
backgroundVisible : bool
Это свойство определяет, должен ли фон заполняться или нет.
Значение по умолчанию — true.
Примечание: rowDelegate не затрагивается этим свойством.
[только для чтения] columnCount : int
Текущее количество столбцов
contentFooter : Component
Это подвал содержимого представления.
contentHeader : Component
Это заголовок содержимого представления.
currentIndex : QModelIndex
Индекс модели текущей строки в представлении дерева.
headerDelegate : Component
Это свойство определяет делегата для отрисовки заголовка.
В делегате заголовка у вас есть доступ к следующим специальным свойствам:
- styleData.value - значение или текст для этого элемента
- styleData.column - индекс столбца
- styleData.pressed - true, когда столбец нажимается
- styleData.containsMouse - true, когда столбец находится под мышью
- styleData.textAlignment - горизонтальное выравнивание текста столбца (с QtQuickControls 1.1)
headerVisible : bool
Это свойство определяет, виден ли заголовок. Значение по умолчанию — true.
itemDelegate : Component
Это свойство определяет делегата для отрисовки конкретной ячейки.
В делегате элемента у вас есть доступ к следующим специальным свойствам:
- styleData.selected - если элемент в настоящее время выделен
- styleData.value - значение или текст для этого элемента
- styleData.textColor - цвет текста по умолчанию для элемента
- styleData.row - индекс строки представления
- styleData.column - индекс столбца представления
- styleData.elideMode - режим обрезки столбца
- styleData.textAlignment - горизонтальное выравнивание текста столбца
- styleData.pressed - true, когда элемент нажат
- styleData.hasActiveFocus - true, когда строка имеет фокус
- styleData.index - QModelIndex текущего элемента в модели
- styleData.depth - глубина текущего элемента в модели
- styleData.isExpanded - true, когда элемент развернут
- styleData.hasChildren - true, если у индекса модели текущего элемента есть или могут быть дочерние элементы
- styleData.hasSibling - true, если у индекса модели текущего элемента есть брат
Пример:
itemDelegate: Item {
Text {
anchors.verticalCenter: parent.verticalCenter
color: styleData.textColor
elide: styleData.elideMode
text: styleData.value
}
} Примечание: По соображениям производительности созданные делегаты могут быть повторно использованы в нескольких строках таблицы. Это означает, что при использовании неявных свойств, таких как styleData.row или model, эти значения могут измениться после создания делегата. Это означает, что вы не должны предполагать, что содержимое фиксировано при вызове Component.onCompleted, а вместо этого полагаться на привязку к таким свойствам.
model : QAbstractItemModel
Это свойство содержит модель, предоставляющую данные для представления дерева.
Модель предоставляет набор данных, отображаемых представлением. TreeView принимает модели, производные от класса QAbstractItemModel.
rootIndex : QModelIndex
Индекс модели корневого элемента в представлении дерева. Корневой элемент является родительским элементом для элементов верхнего уровня представления. Только элементы, являющиеся потомками корневого элемента, будут отображаться в представлении.
Значение по умолчанию — недействительный QModelIndex, что означает, что все данные модели отображаются представлением дерева (присвоение undefined этому свойству сбрасывает его до значения по умолчанию).
Это свойство QML было добавлено в QtQuick.Controls 1.5.
rowDelegate : Component
Это свойство определяет делегат для отрисовки строки.
В делегате строки у вас есть доступ к следующим специальным свойствам:
- styleData.alternate - true, если строка использует альтернативный цвет фона
- styleData.selected - true, если строка выбрана в данный момент
- styleData.row - индекс строки
- styleData.hasActiveFocus - true, если строка имеет фокус (с версии QtQuick.Controls 1.3)
- styleData.pressed - true, если строка нажата (с версии QtQuick.Controls 1.3)
Примечание: для повышения производительности созданные делегаты могут повторно использоваться в нескольких строках таблицы. Это означает, что при использовании неявных свойств, таких как styleData.row или model, эти значения могут измениться после создания делегата. Это означает, что вы не должны предполагать неизменность содержимого при вызове Component.onCompleted, но вместо этого полагайтесь на привязки к таким свойствам.
section.property : string
Эти свойства определяют метки секций.
См. также ListView.section.
selection : ItemSelectionModel
По умолчанию используется модель выбора null, и поддерживается только одиночный выбор.
Для использования другого режима выбора, как описано в selectionMode, необходимо установить ItemSelectionModel для свойства selection.
Например:
TreeView {
model: myModel
selection: ItemSelectionModel {
model: myModel
}
TableViewColumn {
role: "name"
title: "Name
}
}
См. также selectionMode.
selectionMode : int
Этот перечисление определяет, как представление реагирует на выбор пользователя:
Возможные режимы:
- SelectionMode.NoSelection - элементы нельзя выбрать.
- SelectionMode.SingleSelection - когда пользователь выбирает элемент, любой уже выбранный элемент становится невыбранным, и пользователь не может отменить выбор выбранного элемента. (По умолчанию)
- SelectionMode.MultiSelection - при выборе элемента обычным способом, состояние выбора этого элемента переключается, а другие элементы остаются без изменений.
- SelectionMode.ExtendedSelection - когда пользователь выбирает элемент обычным способом, выбор очищается, и новый элемент выбирается. Однако, если пользователь нажимает клавишу Ctrl при щелчке по элементу, выбранный элемент переключается, а остальные элементы остаются без изменений. Если пользователь нажимает клавишу Shift при щелчке по элементу, все элементы между текущим элементом и нажатым элементом выбираются или отменяются выбор в зависимости от состояния нажатого элемента. Несколько элементов можно выбрать, перетащив мышь по ним.
- SelectionMode.ContiguousSelection - когда пользователь выбирает элемент обычным способом, выбор очищается, и новый элемент выбирается. Однако, если пользователь нажимает клавишу Shift при щелчке по элементу, все элементы между текущим и нажатым элементом выбираются.
Это свойство QML было добавлено в QtQuick.Controls 1.1.
sortIndicatorColumn : int
Индекс текущей сортируемой колонки. Значение по умолчанию — 0.
sortIndicatorOrder : int
Устанавливает порядок сортировки указателя сортировки. Разрешенные значения:
- Qt.AscendingOrder — по умолчанию
- Qt.DescendingOrder
sortIndicatorVisible : bool
Это свойство отображает или скрывает указатель сортировки. Значение по умолчанию — false.
Примечание: само представление не сортирует данные.
Документация сигналов
activated(QModelIndex index)
Выдаётся, когда пользователь активирует строку в дереве с помощью мыши или клавиатуры. Активация мышью происходит при однократном или двойном щелчке, в зависимости от платформы.
index — индекс модели активированной строки в дереве.
Примечание: этот сигнал генерируется только для взаимодействия с мышью, которое не блокируется делегатом строки или элемента.
Соответствующий обработчик — onActivated.
clicked(QModelIndex index)
Выдаётся, когда пользователь щелкает по корректной строке в дереве одним щелчком.
index — индекс модели щелкнутой строки в дереве.
Примечание: этот сигнал генерируется только в том случае, если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onClicked.
collapsed(QModelIndex index)
Выдаётся, когда корректная строка в дереве сворачивается, скрывая своих потомков.
index — индекс модели сжатой строки в дереве.
Примечание: этот сигнал генерируется только в том случае, если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onCollapsed.
doubleClicked(QModelIndex index)
Выдаётся, когда пользователь дважды щелкает по корректной строке.
index — индекс модели строки, дважды щелкнутой пользователем.
Примечание: этот сигнал генерируется только в том случае, если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onDoubleClicked.
expanded(QModelIndex index)
Выдаётся, когда корректная строка в дереве развертывается, отображая своих потомков.
index — индекс модели развернутой строки в дереве.
Примечание: этот сигнал генерируется только в том случае, если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onExpanded.
pressAndHold(QModelIndex index)
Выдаётся, когда пользователь удерживает нажатой строку в дереве.
index — индекс модели нажатой строки в дереве.
Примечание: этот сигнал генерируется только в том случае, если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onPressAndHold.
Документация методов
TableViewColumn addColumn(object column)
Добавляет колонку column и возвращает добавленную колонку.
Аргумент column может быть экземпляром TableViewColumn или компонента. Компонент должен содержать TableViewColumn. В противном случае возвращается null.
void collapse(QModelIndex index)
Сворачивает элемент модели, указанный индексом.
См. также collapsed и isExpanded.
void expand(QModelIndex index)
Развертывает элемент модели, указанный индексом.
См. также expanded и isExpanded.
TableViewColumn getColumn(int index)
Возвращает колонку по заданному индексу или null, если индекс некорректен.
QModelIndex indexAt(int x, int y)
Возвращает индекс модели видимой строки в точке x, y в координатах содержимого. Если в указанной точке нет видимой строки, возвращается недействительный QModelIndex.
Примечание: этот метод следует вызывать только после завершения компонента.
TableViewColumn insertColumn(int index, object column)
Вставляет колонку column по заданному индексу и возвращает вставленную колонку.
Аргумент column может быть экземпляром TableViewColumn или компонента. Компонент должен содержать TableViewColumn. В противном случае возвращается null.
bool isExpanded(QModelIndex index)
Возвращает true, если элемент модели с заданным индексом развернут; в противном случае возвращает false.
void moveColumn(int from, int to)
Перемещает столбец из индекса в другой.
void removeColumn(int index)
Удаляет и уничтожает столбец по заданному индексу.
void resizeColumnsToContents()
Изменяет размер всех столбцов, чтобы содержимое столбцов и заголовков умещались.
Этот метод QML был представлен в QtQuick.Controls 1.2.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qml-qtquick-controls-treeview.html