このページでは

HorizontalHeaderView QML Type

TableView に付随する水平方向のヘッダービューを提供します。詳細...

Import Statement: import QtQuick.Controls
Inherits:

TableView

プロパティ

詳細な説明

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

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

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

注: QAbstractItemModel のヘッダーデータを表示するために 、HorizontalHeaderViewは内部的にモデルのヘッダーデータを独立したプロキシモデルでラップします。このモデルは、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
                }
            }
        }
    }
}

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

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

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

model : QVariant

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

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

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

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

movableColumns : bool [since 6.8]

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

注: このプロパティが設定されている場合 、HorizontalHeaderView により、ユーザーは列を任意の位置にドラッグ&ドロップできます。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.