Тип QML TableView
Предоставляет представление списка со скроллбарами, стилизацией и разделами заголовков. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 1.4 |
| С момента: | Qt 5.1 |
| Наследует: |
Свойства
- alternatingRowColors : bool
- backgroundVisible : bool
- columnCount : int
- contentFooter : Component
- contentHeader : Component
- currentRow : int
- headerDelegate : Component
- headerVisible : bool
- itemDelegate : Component
- model : model
- rowCount : int
- rowDelegate : Component
-
section
- section.criteria : перечисление
- section.delegate : Component
- section.labelPositioning : перечисление
- section.property : строка
- selection : Selection
- selectionMode : int
- sortIndicatorColumn : int
- sortIndicatorOrder : int
- sortIndicatorVisible : bool
Сигналы
- activated(int row)
- clicked(int row)
- doubleClicked(int row)
- pressAndHold(int row)
Методы
- TableViewColumn addColumn(object column)
- TableViewColumn getColumn(int index)
- TableViewColumn insertColumn(int index, object column)
- void moveColumn(int from, int to)
- void positionViewAtRow(int row, PositionMode mode)
- void removeColumn(int index)
- void resizeColumnsToContents()
- 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 - Включить ли индикатор сортировки
- enum sortIndicatorOrder - Qt.AscendingOrder или Qt.DescendingOrder в зависимости от состояния
Вы можете создать пользовательский вид для TableView, назначив TableViewStyle.
Документация по свойствам
alternatingRowColors : bool
Это свойство установлено в true если представление чередует цвет строк. Значение по умолчанию true.
backgroundVisible : bool
Это свойство определяет, должен ли фон быть заполнен или нет.
Значение по умолчанию true.
Примечание: rowDelegate не затрагивается этим свойством
[только для чтения] columnCount : int
Текущее количество столбцов
contentFooter : Component
Это нижняя часть содержимого представления.
contentHeader : Component
Это заголовок содержимого представления.
currentRow : int
Индекс текущей строки представления. Значение по умолчанию -1 , чтобы указать, что ни одна строка не выбрана.
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.role - роль столбца представления
- 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
Текущее количество строк
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.criteria : перечисление
Эти свойства определяют метки разделов.
См. также 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.
selectionMode : int
Это перечисление указывает, как вид реагирует на пользовательские выделения:
Возможные режимы:
- SelectionMode.NoSelection - Элементы не могут быть выбраны.
- SelectionMode.SingleSelection - При выборе пользователем элемента любой уже выбранный элемент становится невыбранным, и пользователь не может снять выделение с выбранного элемента. (По умолчанию)
- SelectionMode.MultiSelection - При выборе пользователем элемента обычным способом, статус выбора этого элемента переключается, а другие элементы остаются неизменными.
- SelectionMode.ExtendedSelection - При выборе пользователем элемента обычным способом, выбор очищается и выбирается новый элемент. Однако, если пользователь нажимает клавишу Ctrl при щелчке по элементу, щелкнутый элемент переключается, а все остальные элементы остаются без изменений. Если пользователь нажимает клавишу Shift при щелчке по элементу, все элементы между текущим и щелкнутым элементом выбираются или отменяют выбор, в зависимости от состояния щелкнутого элемента. Несколько элементов могут быть выбраны, перетаскивая курсор по ним.
- SelectionMode.ContiguousSelection - При выборе пользователем элемента обычным способом, выбор очищается и выбирается новый элемент. Однако, если пользователь нажимает клавишу Shift при щелчке по элементу, все элементы между текущим и щелкнутым элементом выбираются.
Это свойство было добавлено в QtQuick.Controls 1.1.
sortIndicatorColumn : int
Индекс текущей сортируемой колонки. Значение по умолчанию — 0.
sortIndicatorOrder : int
Это задаёт порядок сортировки индикатора сортировки. Допустимые значения:
- Qt.AscendingOrder - значение по умолчанию
- Qt.DescendingOrder
sortIndicatorVisible : bool
Это свойство отображает или скрывает индикатор сортировки. Значение по умолчанию — false.
Примечание: Сам вид не сортирует данные.
Документация сигналов
activated(int row)
Выпускается, когда пользователь активирует элемент с помощью мыши или клавиатуры. Активация мышью происходит при одиночном или двойном щелчке в зависимости от платформы.
row int предоставляет доступ к индексу активированной строки.
Примечание: Этот сигнал генерируется только для взаимодействия с мышкой, которое не блокируется в делегате строки или элемента.
Соответствующий обработчик — onActivated.
Примечание: Соответствующий обработчик — onActivated.
clicked(int row)
Выпускается при нажатии пользователем на действительную строку одним кликом.
row int предоставляет доступ к индексу нажатой строки.
Примечание: Этот сигнал генерируется только если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onClicked.
Примечание: Соответствующий обработчик — onClicked.
doubleClicked(int row)
Выпускается при двойном щелчке пользователем по действительной строке.
row int предоставляет доступ к индексу щелкнутой строки.
Примечание: Этот сигнал генерируется только если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onDoubleClicked.
Примечание: Соответствующий обработчик — onDoubleClicked.
pressAndHold(int row)
Выпускается при нажатии и удерживании пользователем действительной строки.
row int предоставляет доступ к индексу нажатой строки.
Примечание: Этот сигнал генерируется только если строка или делегат элемента не принимают события мыши.
Соответствующий обработчик — onPressAndHold.
Примечание: Соответствующий обработчик — onPressAndHold.
Этот сигнал был добавлен в QtQuick.Controls 1.3.
Документация методов
TableViewColumn addColumn(object column)
Добавляет column и возвращает добавленную колонку.
Аргумент column может быть экземпляром TableViewColumn или компонента. Компонент должен содержать TableViewColumn. В противном случае возвращается null.
TableViewColumn getColumn(int index)
Возвращает колонку по заданному index или null если index недействителен.
TableViewColumn insertColumn(int index, object column)
Вставляет column в заданный index и возвращает вставленную колонку.
Аргумент column может быть экземпляром TableViewColumn или компонента. Компонент должен содержать TableViewColumn. В противном случае возвращается null.
void moveColumn(int from, int to)
Перемещает колонку из индекса from в to.
void positionViewAtRow(int row, PositionMode mode)
Располагает вид так, чтобы указанная row находилась в позиции, определённой mode:
- ListView.Beginning - позиционирует элемент в верхней части вида.
- ListView.Center - позиционирует элемент по центру вида.
- ListView.End - позиционирует элемент в нижней части вида.
- ListView.Visible - если любая часть элемента видна, то ничего не делает; в противном случае, выводит элемент на экран.
- ListView.Contain - гарантирует, что весь элемент виден. Если элемент больше, чем вид, элемент позиционируется в верхней части вида.
Если позиционирование row создаёт пустое место в начале или конце вида, то вид позиционируется на границе.
Например, чтобы позиционировать вид в конце при запуске:
Component.onCompleted: table.positionViewAtRow(rowCount -1, ListView.Contain)
В зависимости от того, как заполняется модель, модель может быть не готова, когда вызывается TableView Component.onCompleted. В этом случае может потребоваться отложить вызов positionViewAtRow, используя Timer.
Примечание: Этот метод следует вызывать только после завершения компонента.
void removeColumn(int index)
Удаляет и уничтожает колонку по заданному index.
void resizeColumnsToContents()
Изменяет размеры всех колонок, чтобы содержимое колонки и заголовки помещались.
Этот метод был добавлен в QtQuick.Controls 1.2.
Возвращает индекс видимой строки в точке x, y в координатах содержимого. Если в указанной точке нет видимой строки, возвращается -1.
Примечание: Этот метод следует вызывать только после завершения работы компонента.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtquick-controls-tableview.html