Spec-Zone.ru › Qt 5.13

Тип QML TableView

Обеспечивает просмотр списка со скроллбарами, стилизацией и разделами заголовков. Подробнее...

Оператор импорта: import QtQuick.Controls 1.4
С момента: Qt 5.1
Наследует:

ScrollView

  • Список всех членов, включая унаследованные

Свойства

  • currentRow : int
  • itemDelegate : Component
  • model : модель
  • rowCount : int
  • section
    • section.property : строка
    • section.criteria : перечисление
    • section.delegate : Component
    • section.labelPositioning : перечисление
  • selection : Selection

Сигналы

  • activated(строка)
  • clicked(строка)
  • doubleClicked(строка)
  • pressAndHold(строка)

Методы

  • void positionViewAtRow( int строка, PositionMode режим)
  • 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.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 : модель

Это свойство содержит модель, предоставляющую данные для представления таблицы.

Модель предоставляет набор данных, используемых для создания элементов в представлении. Модели можно создавать непосредственно в 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 : строка

Эти свойства определяют метки разделов.

См. также 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(строка)

Издаётся, когда пользователь активирует элемент с помощью мыши или клавиатуры. Активация мышью запускается одиночным или двойным щелчком, в зависимости от платформы.

row int предоставляет доступ к индексу активированной строки.

Примечание: Этот сигнал издаётся только для взаимодействия с мышью, которое не блокируется в строке или делегате элемента.

Соответствующий обработчик — onActivated.

clicked(строка)

Издаётся, когда пользователь кликает на строку одиночным кликом.

row int предоставляет доступ к индексу нажатой строки.

Примечание: Этот сигнал издаётся только если строка или делегат элемента не принимают события мыши.

Соответствующий обработчик — onClicked.

doubleClicked(строка)

Издаётся, когда пользователь дважды кликает по строке.

row int предоставляет доступ к индексу нажатой строки.

Примечание: Этот сигнал издаётся только если строка или делегат элемента не принимают события мыши.

Соответствующий обработчик — onDoubleClicked.

pressAndHold(строка)

Издаётся, когда пользователь нажимает и удерживает строку.

row int предоставляет доступ к индексу нажатой строки.

Примечание: Этот сигнал издаётся только если строка или делегат элемента не принимают события мыши.

Соответствующий обработчик — onPressAndHold.

Этот сигнал был добавлен в QtQuick.Controls 1.3.

Документация по методам

void positionViewAtRow( int строка, PositionMode режим)

Позиционирует представление так, чтобы указанная строка находилась в позиции, определённой параметром режим:

  • ListView.Beginning - позиционирует элемент в верхней части представления.
  • ListView.Center - позиционирует элемент в центре представления.
  • ListView.End - позиционирует элемент в нижней части представления.
  • ListView.Visible - если любая часть элемента видна, никаких действий не предпринимается; в противном случае элемент приводится в область видимости.
  • ListView.Contain - обеспечивает видимость всего элемента. Если элемент больше представления, элемент позиционируется в верхней части представления.

Если позиционирование строки создаёт пустое место в начале или конце представления, представление позиционируется на границе.

Например, для позиционирования представления в конце при запуске:

Component.onCompleted: table.positionViewAtRow(rowCount -1, ListView.Contain)

В зависимости от того, как заполняется модель, модель может быть не готова, когда вызывается TableView Component.onCompleted. В этом случае вам может потребоваться отложить вызов positionViewAtRow, используя Timer.

Примечание: Этот метод следует вызывать только после завершения компонента.

int rowAt( int x, int y)

Возвращает индекс видимой строки в точке x, y в координатах содержимого. Если в указанной точке нет видимой строки, возвращается -1.

Примечание: Этот метод следует вызывать только после завершения компонента.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qml-qtquick-controls-tableview.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API