Spec-Zone.ru › Qt 5.6

Тип 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.критерии : перечисление
    • section.делегат : Component
    • section.позиционирование_метки : перечисление
  • выделение : Selection
  • режим_выделения : int
  • индикатор_сортировки_столбец : int
  • порядок_индикатора_сортировки : int
  • видимость_индикатора_сортировки : 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 - true, если элемент в настоящее время выделен
  • 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/archives/qt-5.6/qml-qtquick-controls-tableview.html

Spec-Zone.ru

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