VerticalHeaderView QML Type
Propose un affichage avec en-tête vertical pour accompagner une TableView. En savoir 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
Une vue VerticalHeaderView fournit un en-tête de tableau stylisé. Elle peut être utilisée soit comme vue indépendante, soit comme en-tête d'une TableView.
Vous pouvez ajouter un en-tête à une TableView en attribuant la TableView à la propriété syncView de la VerticalHeaderView. L'en-tête et le tableau resteront alors synchronisés lors du défilement.
Par défaut, VerticalHeaderView affiche les données d’ header data issues 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 modèle syncView, vous pouvez attribuer explicitement un modèle à la propriété model.
Remarque : afin d'afficher les données d'en-tête d'un QAbstractItemModel, VerticalHeaderView encapsule 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 avec le application model. Cela signifie que si vous appelez des fonctions telles que index(), l'index du modèle renvoyé appartiendra au modèle proxy et non au modèle de l'application.
Par défaut, ` textRole ` est défini sur ` "display"`, ce qui signifie que les données provenant de la ` Qt::DisplayRole ` du modèle seront utilisées. Vous pouvez définir cette propriété sur un autre nom de rôle afin que ces données soient affichées à la place.
L’application est chargée de placer l’en-tête à l’emplacement correct dans la scène. Vous pouvez ajouter autant d’en-têtes que vous le souhaitez à un même TableView, ce qui peut s’avérer utile si, par exemple, vous souhaitez placer des en-têtes sur les quatre côtés du tableau.
L'extrait de code 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
}
}
}
}
}Par défaut, la propriété ` resizableColumns ` d’une `VerticalHeaderView` est définie 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 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 explicitement un modèle à cette propriété. Si model est un QAbstractTableModel, c'est header data qui sera utilisé. Sinon, s'il s'agit d'un QAbstractItemModel, c'est data qui sera utilisé.
Outre QAbstractItemModels, vous pouvez également attribuer d'autres types de modèles à cette propriété, tels que des 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, l'VerticalHeaderView permet à l'utilisateur de glisser-déposer des lignes à l'emplacement souhaité. Lorsque l'option « syncView » est activée, 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 l'TableView e avec laquelle la synchronisation doit s'effectuer.
Une fois cette propriété liée à une autre TableView, l'en-tête et le tableau se synchroniseront en ce qui concerne la largeur des colonnes, l'espacement entre les colonnes et le défilement vertical.
Si l'model n'est pas explicitement définie, l'en-tête utilisera le modèle de syncView pour nommer 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 comporte plusieurs rôles, textRole peut être défini pour déterminer quel rôle doit être affiché.
Il incombe au délégué de respecter l’ textRole attribuée lors de la présentation des données provenant du modèle. Alors que ` HorizontalHeaderViewDelegate ` et ` VerticalHeaderViewDelegate ` gèrent cela automatiquement, les délégués personnalisés doivent implémenter ce comportement explicitement.
Si le modèle est un ` QAbstractItemModel `, la valeur par défaut est « display » ; sinon, elle est vide.
Un avertissement est généré si la méthode ` roleNames()` du modèle ne fournit pas le rôle spécifié dans `textRole`. Cet avertissement peut être désactivé en définissant la propriété `textRole`.
Voir également ` 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.