Spec-Zone.ru › Qt 5.9

Тип QML TableView

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

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

ScrollView

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

Свойства

  • 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.property : string
    • section.criteria : перечисление
    • section.delegate : Component
    • section.labelPositioning : перечисление
  • 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.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.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)} )

Это свойство QML было введено в QtQuick.Controls 1.1.

selectionMode : int

Этот перечисление определяет, как вид реагирует на выбор пользователя:

Возможные режимы:

  • SelectionMode.NoSelection - Элементы не могут быть выбраны.
  • SelectionMode.SingleSelection - Когда пользователь выбирает элемент, любой уже выбранный элемент становится невыбранным, и пользователь не может отменить выбор выбранного элемента. (По умолчанию)
  • SelectionMode.MultiSelection - Когда пользователь выбирает элемент обычным способом, статус выбора этого элемента переключается, а другие элементы остаются без изменений.
  • SelectionMode.ExtendedSelection - Когда пользователь выбирает элемент обычным способом, выбор сбрасывается, и новый элемент выбирается. Однако, если пользователь нажимает клавишу Ctrl при нажатии на элемент, выбранный элемент переключается, а все остальные элементы остаются без изменений. Если пользователь нажимает клавишу Shift при нажатии на элемент, все элементы между текущим элементом и нажатым элементом выбираются или убираются из выбора, в зависимости от состояния нажатого элемента. Несколько элементов можно выбрать, перетащив мышью.
  • SelectionMode.ContiguousSelection - Когда пользователь выбирает элемент обычным способом, выбор сбрасывается, и новый элемент выбирается. Однако, если пользователь нажимает клавишу Shift при нажатии на элемент, все элементы между текущим элементом и нажатым элементом выбираются.

Это свойство QML было введено в QtQuick.Controls 1.1.

sortIndicatorColumn : int

Индекс текущей сортируемой колонки. Значение по умолчанию 0.

sortIndicatorOrder : int

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

  • Qt.AscendingOrder - по умолчанию
  • Qt.DescendingOrder

sortIndicatorVisible : bool

Это свойство отображает или скрывает индикатор сортировки. Значение по умолчанию false.

Примечание: Сам вид не сортирует данные.

Документация по сигналам

activated(int row)

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

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

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

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

clicked(int row)

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

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

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

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

doubleClicked(int row)

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

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

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

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

pressAndHold(int row)

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

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

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

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

Этот QML-сигнал был введен в 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()

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

Этот QML-метод был введен в 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.9/qml-qtquick-controls-tableview.html

Spec-Zone.ru

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