Тип QML TableView
Предоставляет представление списка со скроллбарами, стилизацией и разделами заголовков. Подробнее...
| Оператор импорта: | import QtQuick.Controls 1.4 |
| С момента: | Qt 5.1 |
| Наследует: |
Свойства
- currentRow : int
- itemDelegate : Component
- model : model
- rowCount : int
-
section
- section.property : string
- section.criteria : перечисление
- section.delegate : Component
- section.labelPositioning : перечисление
- selection : Selection
Сигналы
- activated(int row)
- clicked(int row)
- doubleClicked(int row)
- pressAndHold(int row)
Методы
- void positionViewAtRow( int row, PositionMode mode)
- int rowAt( int x, int y)
Подробное описание
Класс TableView похож на ListView и добавляет скроллбары, выделение и изменяемые по размеру разделы заголовков. Как и в ListView, данные для каждой строки предоставляются через свойство model:
ListModel {
id: libraryModel
ListElement {
title: "A Masterpiece"
author: "Gabriel"
}
ListElement {
title: "Brilliance"
author: "Jens"
}
ListElement {
title: "Outstanding"
author: "Frederik"
}
} Вы предоставляете заголовок и размер столбца, добавив TableViewColumn, как показано ниже.
TableView {
TableViewColumn {
role: "title"
title: "Title"
width: 100
}
TableViewColumn {
role: "author"
title: "Author"
width: 200
}
model: libraryModel
} Разделы заголовков прикреплены к значениям в свойстве model путём определения роли модели, к которой они прикреплены. Затем каждое свойство в модели будет отображено в соответствующем столбце.
Вы можете настроить внешний вид, переопределяя свойства itemDelegate, rowDelegate или headerDelegate.
Само представление не предоставляет сортировку. Это должно быть выполнено в самой модели. Однако вы можете предоставить сортировку в модели и включить индикаторы сортировки в заголовках.
- int sortIndicatorColumn - Индекс текущего столбца сортировки
- bool sortIndicatorVisible - Включить индикатор сортировки
- перечисление sortIndicatorOrder - Qt.AscendingOrder или Qt.DescendingOrder в зависимости от состояния
Вы можете создать пользовательский вид TableView, назначив TableViewStyle.
Документация свойств
currentRow : int
Индекс текущей строки представления. Значение по умолчанию -1 указывает, что ни одна строка не выбрана.
itemDelegate : Component
Это свойство определяет делегат для отрисовки конкретной ячейки.
В делегате элемента доступны следующие специальные свойства:
- styleData.selected - если элемент в настоящее время выбран
- styleData.value - значение или текст для этого элемента
- styleData.textColor - цвет текста по умолчанию для элемента
- styleData.row - индекс строки представления
- styleData.column - индекс столбца представления
- styleData.elideMode - режим обрезания столбца
- styleData.textAlignment - выравнивание текста по горизонтали столбца
- styleData.pressed - true, когда элемент нажат (с версии QtQuick.Controls 1.3)
- styleData.hasActiveFocus - true, когда строка имеет фокус (с версии QtQuick.Controls 1.3)
Пример:
itemDelegate: Item {
Text {
anchors.verticalCenter: parent.verticalCenter
color: styleData.textColor
elide: styleData.elideMode
text: styleData.value
}
} Примечание: По соображениям производительности созданные делегаты могут быть повторно использованы для нескольких строк таблицы. Это означает, что при использовании неявных свойств, таких как styleData.row или model, эти значения могут измениться после создания делегата. Это означает, что вы не должны предполагать, что содержимое закреплено, когда Component.onCompleted вызывается, но вместо этого полагаться на привязки к таким свойствам.
model : model
Это свойство содержит модель, предоставляющую данные для представления таблицы.
Модель предоставляет набор данных, используемых для создания элементов в представлении. Модели могут быть созданы непосредственно в QML с помощью ListModel, XmlListModel или VisualItemModel, или предоставлены классами модели C++.
Пример модели:
model: ListModel {
ListElement {
column1: "value 1"
column2: "value 2"
}
ListElement {
column1: "value 3"
column2: "value 4"
}
} См. также ListView::model и Модели данных.
rowCount : int
Текущее количество строк
section.property : string
Эти свойства определяют метки разделов.
См. также ListView.section.
selection : Selection
Это свойство содержит текущий выбор строк TableView. Выбор позволяет выбирать, отменять выбор или итерировать по выбранным строкам.
- функция clear() - отменяет выбор всех строк
- функция selectAll() - выбирает все строки
- функция select(from, to) - выбирает диапазон
- функция deselect(from, to) - отменяет выбор диапазона
- функция forEach(callback) - итерирует по всем выбранным строкам
- функция contains(index) - проверяет, включает ли выбор данный индекс
- сигнал selectionChanged() - текущий выбор строк изменён
- только для чтения свойство int count - количество выбранных строк
Пример:
tableview.selection.select(0) // select row index 0 tableview.selection.select(1, 3) // select row indexes 1, 2 and 3 tableview.selection.deselect(0, 1) // deselects row index 0 and 1 tableview.selection.deselect(2) // deselects row index 2
Пример: Чтобы итерировать по выбранным индексам, вы можете передать функцию обратного вызова. rowIndex передаётся как аргумент функции обратного вызова.
tableview.selection.forEach( function(rowIndex) {console.log(rowIndex)} ) Это свойство было введено в QtQuick.Controls 1.1.
Документация сигналов
activated(int row)
Выдаётся, когда пользователь активирует элемент с помощью мыши или клавиатуры. Активация мышью происходит при одиночном или двойном щелчке в зависимости от платформы.
row int предоставляет доступ к индексу активированной строки.
Примечание: Этот сигнал генерируется только для взаимодействия с мышкой, которое не заблокировано в строке или делегате элемента.
Соответствующая обработка onActivated.
clicked(int row)
Выдаётся, когда пользователь щелкает по допустимой строке один раз
row int предоставляет доступ к индексу нажатой строки.
Примечание: Этот сигнал генерируется только в случае, если строка или делегат элемента не обрабатывают события мыши.
Соответствующая обработка onClicked.
doubleClicked(int row)
Выдаётся, когда пользователь дважды щелкает по допустимой строке.
row int предоставляет доступ к индексу нажатой строки.
Примечание: Этот сигнал генерируется только в случае, если строка или делегат элемента не обрабатывают события мыши.
Соответствующая обработка onDoubleClicked.
pressAndHold(int row)
Выдаётся, когда пользователь нажимает и удерживает допустимую строку.
row int предоставляет доступ к индексу нажатой строки.
Примечание: Этот сигнал генерируется только в случае, если строка или делегат элемента не обрабатывают события мыши.
Соответствующая обработка onPressAndHold.
Этот сигнал был введён в QtQuick.Controls 1.3.
Документация методов
void positionViewAtRow( int row, PositionMode mode)
Размещает представление таким образом, что указанная строка находится в позиции, определённой режимом:
- ListView.Начало - позиционирует элемент в верхней части представления.
- ListView.Центр - позиционирует элемент по центру представления.
- ListView.Конец - позиционирует элемент в нижней части представления.
- ListView.Видимый - если какая-либо часть элемента видна, то никаких действий не выполняется, иначе элемент выводится в область видимости.
- ListView.Содержимое - гарантирует, что весь элемент виден. Если элемент больше, чем область просмотра, элемент позиционируется в верхней части области просмотра.
Если позиционирование строки создает пустое пространство в начале или конце представления, то представление позиционируется на границе.
Например, для позиционирования представления в конце при запуске:
Component.onCompleted: table.positionViewAtRow(rowCount -1, ListView.Contain)
В зависимости от того, как заполняется модель, модель может не быть готова, когда вызывается TableView Component.onCompleted. В этом случае вам может потребоваться отложить вызов positionViewAtRow, используя Таймер.
Примечание: Этот метод следует вызывать только после завершения компонента.
Возвращает индекс видимой строки в точке x, y в координатах содержимого. Если в указанной точке нет видимой строки, -1 возвращается.
Примечание: Этот метод следует вызывать только после завершения компонента.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtquick-controls-tableview.html