Spec-Zone.ru › Qt 5.12

Тип QML TableView

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

Заявление об импорте: import QtQuick.Controls 1.4
С тех пор: Qt 5.1
Наследует:

ScrollView

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

Свойства

  • 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 - Включить или выключить индикатор сортировки
  • enum 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 : 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)

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

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

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

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

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

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

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

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.12/qml-qtquick-controls-tableview.html

Spec-Zone.ru

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