このページでは

VerticalHeaderView QML Type

TableView に併せて、縦型ヘッダービューを提供します。詳細...

Import Statement: import QtQuick.Controls
Inherits:

TableView

プロパティ

詳細説明

VerticalHeaderViewは、スタイルが適用されたテーブルヘッダーを提供します。独立したビューとして、あるいはTableView のヘッダーとして使用できます。

TableView にヘッダーを追加するには、VerticalHeaderViewのsyncView プロパティにTableView を割り当てます。これにより、フリック操作の際にもヘッダーとテーブルが同期されます。

デフォルトでは、VerticalHeaderViewはsync view's のmodel からheader data を表示します。そのモデルのヘッダーデータを使用しない場合、またはsyncView を使用しない場合は、model プロパティにモデルを明示的に割り当てることができます。

注: QAbstractItemModel のヘッダーデータを表示するため 、VerticalHeaderViewは内部的にモデルのヘッダーデータを独立したプロキシモデルでラップします。このモデルは、application model とモデル項目を一切共有しません。つまり、index() などの関数を呼び出した場合、返されるモデルインデックスはアプリケーションモデルではなく、プロキシモデルに属するものです。

デフォルトでは、textRole は"display" に設定されており、モデルのQt::DisplayRole からのデータが使用されます。代わりにそのデータを表示させるには、これを別のロール名に設定することができます。

ヘッダーをシーン内の適切な位置に配置するのはアプリケーションの役割です。1つの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: Application.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
                }
            }
        }
    }
}

VerticalHeaderViewでは、デフォルトでresizableColumns がtrue に設定されています。

「HorizontalHeaderView」も参照してください 。

プロパティのドキュメント

model : QVariant

このプロパティには、縦型ヘッダービューにデータを供給するモデルが格納されます。

デフォルトでは、垂直ヘッダービューは `sync view's `model から `header data ` を表示します。そのモデルのヘッダーデータを使用しない場合、または `syncView` を使用しない場合は、このプロパティにモデルを明示的に割り当てることができます。`model ` が `QAbstractTableModel` である場合、その `header data ` が使用されます。それ以外の場合、つまり `QAbstractItemModel` である場合は、`data ` が使用されます。

QAbstractItemModels に加え、JavaScript配列など、他の種類のモデルをこのプロパティに割り当てることもできます。

TableView 、model 、およびQAbstractTableModelも参照してください 。

movableRows : bool [since 6.8]

このプロパティを設定すると、ユーザーはビュー内の行を移動できるようになります。デフォルト値は `false` です。

注: このプロパティが設定されている場合 、VerticalHeaderView により、ユーザーは行を任意の位置にドラッグ&ドロップできるようになります。syncView が有効になっている場合、変更は対応するビューアイテムに反映されます。

このプロパティはQt 6.8で導入されました。

syncView : TableView

このプロパティには、同期対象となるTableView が格納されます。

このプロパティが別のTableView にバインドされると、ヘッダーとテーブルの両方が、列幅、列間隔、および垂直方向のスクロールに関して同期するようになります。

model が明示的に設定されていない場合、ヘッダーは syncView のモデルを使用して列にラベルを付けます。

「 model 」および「TableView 」も参照してください 。

textRole : string

このプロパティには、各ヘッダーセルにテキストを表示するために使用されるモデルのロールが格納されます。

モデルに複数のロールがある場合、textRole を設定することで、どのロールを表示するかを指定できます。

モデルからのデータを表示する際、割り当てられたtextRole を尊重するのはデリゲートの責任です。HorizontalHeaderViewDelegate およびVerticalHeaderViewDelegate ではこれが自動的に処理されますが、カスタムデリゲートではこの動作を明示的に実装する必要があります。

modelがQAbstractItemModel である場合、デフォルト値は「display」となります。それ以外の場合は空になります。

モデルのroleNames()がtextRoleで指定された役割を提供していない場合、警告が表示されます。この警告は、textRoleを設定することで無効にできます。

QAbstractItemModel::roleNames()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.