VerticalHeaderView QML Type
Offre une vue d'en-tête verticale pour accompagner une page TableView. Plus...
| Import Statement: | import QtQuick.Controls |
| Inherits: |
Propriétés
- model : QVariant
- movableRows : bool
(since 6.8) - syncView : TableView
- textRole : string
Description détaillée
VerticalHeaderView fournit un en-tête de tableau stylisé. Il peut être utilisé comme vue indépendante ou comme en-tête d'un site TableView.
Vous pouvez ajouter un en-tête pour un TableView en assignant le TableView à la propriété syncView de VerticalHeaderView. L'en-tête et le tableau seront alors synchronisés lors du feuilletage.
Par défaut, VerticalHeaderView affiche header data à partir de sync view's model . Si vous ne souhaitez pas utiliser les données d'en-tête de ce modèle, ou si vous n'utilisez pas de syncView, vous pouvez attribuer un modèle explicitement à la propriété model.
Note : Afin d'afficher les données d'en-tête d'un QAbstractItemModel, VerticalHeaderView enveloppera en interne les données d'en-tête du modèle dans un modèle proxy indépendant. Ce modèle ne partage aucun élément de modèle avec le modèle application model. Cela signifie que si vous appelez des fonctions telles que index(), l'index de modèle que vous obtenez en retour appartiendra au modèle proxy et non au modèle d'application.
Par défaut, textRole est défini sur "display", ce qui signifie que les données du modèle Qt::DisplayRole seront utilisées. Vous pouvez définir un autre nom de rôle pour que ces données soient affichées à la place.
L'application est chargée de placer l'en-tête au bon endroit dans la scène. Vous pouvez ajouter autant d'en-têtes que vous le souhaitez à un seul site TableView, ce qui peut être utile si vous souhaitez, par exemple, placer des en-têtes sur les quatre côtés du tableau.
L'extrait suivant montre comment ajouter une vue d'en-tête horizontale et verticale à une vue de tableau :
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 } } } } }
Dans le cas d'une vue VerticalHeaderView, l'adresse resizableColumns est définie par défaut sur true.
Voir également HorizontalHeaderView.
Documentation sur les propriétés
model : QVariant
Cette propriété contient le modèle fournissant les données pour l'affichage de l'en-tête vertical.
Par défaut, la vue d'en-tête verticale affiche header data à partir du modèle sync view's model . Si vous ne souhaitez pas utiliser les données d'en-tête de ce modèle, ou si vous n'utilisez pas de syncView, vous pouvez attribuer un modèle explicitement à cette propriété. Si model est un QAbstractTableModel, c'est son header data qui sera utilisé. Sinon, s'il s'agit d'un QAbstractItemModel, c'est le data qui sera utilisé.
Outre QAbstractItemModels, vous pouvez également affecter d'autres types de modèles à cette propriété, tels que les tableaux JavaScript.
Voir également TableView, model, et QAbstractTableModel.
movableRows : bool [since 6.8]
Cette propriété permet à l'utilisateur de déplacer des lignes dans la vue. La valeur par défaut est false.
Remarque : si cette propriété est définie, le site VerticalHeaderView permet à l'utilisateur de faire glisser et de déposer des lignes à la position souhaitée. Lorsque syncView est activé, toute modification sera appliquée à l'élément de vue correspondant.
Cette propriété a été introduite dans Qt 6.8.
syncView : TableView
Cette propriété contient le site TableView avec lequel il faut se synchroniser.
Une fois que cette propriété est liée à une autre TableView, l'en-tête et le tableau se synchronisent en ce qui concerne la largeur et l'espacement des colonnes, ainsi que le défilement vertical.
Si la propriété model n'est pas explicitement définie, l'en-tête utilisera le modèle du syncView pour étiqueter les colonnes.
Voir également model et TableView.
textRole : string
Cette propriété contient le rôle du modèle utilisé pour afficher le texte dans chaque cellule d'en-tête.
Lorsque le modèle a plusieurs rôles, textRole peut être défini pour déterminer le rôle à afficher.
Il incombe au délégué de respecter l'adresse textRole qui lui a été attribuée lorsqu'il présente les données du modèle. Alors que HorizontalHeaderViewDelegate et VerticalHeaderViewDelegate gèrent cela automatiquement, les délégués personnalisés doivent implémenter ce comportement de manière explicite.
Si le modèle est un QAbstractItemModel, il prend par défaut la valeur "display" ; sinon, il est vide.
Un avertissement est donné si la fonction roleNames() du modèle ne fournit pas le rôle spécifié dans textRole. L'avertissement peut être désactivé en définissant textRole.
Voir aussi 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.