水平表头视图 QML 类型

TableView 提供一个水平表头视图。 更多...

导入语句import QtQuick.Controls
继承

TableView

属性

详细描述

水平表头视图提供了一个样式化的表头。它可以用作独立视图或 TableView 的表头。

您可以将水平表头视图分配给 TableViewTableView::syncView 属性以为 TableView 添加一个表头。在滚动时,表头和表格将保持同步。

默认情况下,水平表头视图显示从 syncViewmodel 中获取的 header data。如果您不希望使用此模型,您可以将不同的模型分配给 model 属性。如果您分配了一个 QAbstractItemModel 模型,则将使用其头部数据。否则,将直接使用模型中的数据(例如,如果您分配了一个简单的字符串数组模型)。

注意: 为了显示 QAbstractItemModel 的头部数据,水平表头视图将内部将模型的头部数据包装在独立的代理模型中。此模型不与应用程序模型共享任何模型项。这意味着如果您调用诸如 index() 等函数,则返回的模型索引将属于代理模型而不是应用程序模型。

默认情况下,textRole 设置为 "display",这意味着将使用模型的 Qt::DisplayRole 中的数据。您可以将其设置为其他角色名称,以便显示该数据。

应用程序负责将表头放置在场景中的正确位置。您可以为单个 TableView 添加任意数量的表头,这可能在您想要在表格的四个边放置表头时很有用。

以下代码片段显示了如何向表格视图添加水平和垂直表头视图:

import QtQuick
import QtQuick.Controls
import Qt.labs.qmlmodels

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("HeaderView")

    Rectangle {
        anchors.fill: parent
        // The background color will show through the cell
        // spacing, and therefore become the grid line color.
        color: Qt.styleHints.appearance === Qt.Light ? palette.mid : palette.midlight

        HorizontalHeaderView {
            id: horizontalHeader
            anchors.left: tableView.left
            anchors.top: parent.top
            syncView: tableView
            clip: true
        }

        VerticalHeaderView {
            id: verticalHeader
            anchors.top: tableView.top
            anchors.left: parent.left
            syncView: tableView
            clip: true
        }

        TableView {
            id: tableView
            anchors.left: verticalHeader.right
            anchors.top: horizontalHeader.bottom
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            clip: true

            columnSpacing: 1
            rowSpacing: 1

            model: TableModel {
                TableModelColumn { display: "name" }
                TableModelColumn { display: "color" }

                rows: [
                    {
                        "name": "cat",
                        "color": "black"
                    },
                    {
                        "name": "dog",
                        "color": "brown"
                    },
                    {
                        "name": "bird",
                        "color": "white"
                    }
                ]
            }

            delegate: Rectangle {
                implicitWidth: 100
                implicitHeight: 20
                color: palette.base
                Label {
                    text: display
                }
            }
        }
    }

水平表头视图(HorizontalHeaderView)默认将 resizableColumns 设置为 true

另请参阅垂直表头视图(VerticalHeaderView)

属性文档

model : QVariant

此属性保存为水平表头视图提供数据的模型。

若未显式设置模型,则在设置了 syncView 后,表头将使用 syncView 的模型。

如果模型是 QAbstractTableModel,将访问其 horizontalHeaderData()。

如果模型是除了 QAbstractTableModel 以外的 QAbstractItemModel,将访问模型的数据()。

否则,行为与设置 TableView::model 相同。

另请参阅TableViewmodelQAbstractTableModel


syncView : TableView

此属性保存要与其同步的 TableView

一旦此属性绑定到另一个 TableView,表头和表格将在列宽、列间距和水平滚动方面同步。

如果未显式设置 model,则表头将使用 syncView 的模型来标注列。

另请参阅modelTableView


textRole : QString

此属性保存用于在每个表头单元格中显示文本的模型角色。

当模型具有多个角色时,可以通过设置 textRole 来确定应显示哪个角色。

如果模型是 QAbstractItemModel,则默认为 "display";否则为空。

如果模型的重载 roleNames() 不提供在 textRole 中指定的角色,则会给出一条警告。可以通过设置 textRole 来忽略警告。

另请参阅QAbstractItemModel::roleNames


© 2024 The Qt Company Ltd. 本文档的贡献权归各自所有者所有。本文档的提供受 GNU自由文档许可证版本1.3 的约束,由自由软件基金会发布。Qt及其相应标志是芬兰及全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。