Spec-Zone.ru › Qt 5.14

Тип QML TableView

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

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

BasicTableView

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

Свойства

  • 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(row)
  • clicked(row)
  • doubleClicked(row)
  • pressAndHold(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 : enumeration

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

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

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

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

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

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

clicked(row)

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

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

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

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

doubleClicked(row)

Выдаётся, когда пользователь дважды щелкает по корректной строке.

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

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

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

pressAndHold(row)

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

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

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

Соответствующий обработчик - 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.

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

Spec-Zone.ru

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