TreeViewDelegate QML Type
Un délégué qui peut être assigné à un TreeView. Plus....
| Import Statement: | import QtQuick.Controls |
| Since: | Qt 6.3 |
| Inherits: |
Propriétés
- current : bool
- depth : int
- editing : bool
(since 6.5) - expanded : bool
- hasChildren : bool
- indentation : real
- isTreeNode : bool
- leftMargin : real
- rightMargin : real
- selected : bool
- treeView : TreeView
Description détaillée

Un TreeViewDelegate est un délégué qui peut être assigné à delegate property d'un TreeView. Il rend l'arbre, ainsi que les autres colonnes, dans la vue en utilisant le style de l'application.
TreeView { anchors.fill: parent delegate: TreeViewDelegate {} // The model needs to be a QAbstractItemModel // model: yourTreeModel }
TreeViewDelegate hérite de ItemDelegate, ce qui signifie qu'il est composé de trois éléments : un background, un contentItem, et un indicator. TreeViewDelegate se charge de indenting le contentItem et l'indicateur en fonction de leur emplacement dans l'arbre. L'indicateur ne sera visible que si l'élément délégué se trouve à l'intérieur de tree column, et rend un élément de modèle with children.
Si vous modifiez l'indicateur, il ne sera plus indenté par défaut. Au lieu de cela, vous devez l'indenter vous-même en définissant le x position de l'indicateur, en tenant compte du depth et du indentation. Vous trouverez ci-dessous un exemple de la manière de procéder :
TreeViewDelegate { indicator: Item { x: leftMargin + (depth * indentation) } }
La position de l'élément de contenu est contrôlée par padding. Cela signifie que vous pouvez modifier l'élément de contenu sans vous préoccuper de l'indentation. Mais cela signifie également que vous devez éviter de remplacer le padding par quelque chose d'autre, car cela supprimera l'indentation. L'espace à gauche de l'indicateur est contrôlé par leftMargin. L'espace entre l'indicateur et l'élément de contenu est contrôlé par spacing. Et l'espace à droite de l'élément de contenu est contrôlé par rightMargin.
Interaction avec les pointeurs
TreeViewDelegate hérite de ItemDelegate. Cela signifie qu'il émettra des signaux tels que clicked lorsque l'utilisateur cliquera sur le délégué. Si nécessaire, vous pouvez vous connecter à ce signal pour mettre en œuvre une fonctionnalité spécifique à l'application, en plus du comportement d'expansion/réduction par défaut (et même définir pointerNavigationEnabled à false, pour désactiver également le comportement par défaut).
Mais l'API ItemDelegate ne vous donne pas d'informations sur la position du clic, ni sur les modificateurs maintenus. Si vous avez besoin de ces informations, une meilleure approche consisterait à utiliser des gestionnaires de pointeurs, par exemple :
TreeView { id: treeView delegate: TreeViewDelegate { TapHandler { acceptedButtons: Qt.RightButton onTapped: someContextMenu.open() } TapHandler { acceptedModifiers: Qt.ControlModifier onTapped: { if (treeView.isExpanded(row)) treeView.collapseRecursively(row) else treeView.expandRecursively(row) } } } }
Remarque : si vous souhaitez désactiver le comportement par défaut qui se produit lorsque l'utilisateur clique sur le délégué (comme la modification de l'index actuel), vous pouvez définir pointerNavigationEnabled sur false.
Modification des nœuds de l'arbre
Le délégué TreeView a une valeur par défaut edit delegate. Si TreeView est associé à edit triggers et que model prend en charge editing model items, l'utilisateur peut activer l'un des déclencheurs d'édition pour modifier le texte du nœud de l'arbre current.
Le délégué d'édition par défaut essaiera d'utiliser Qt.EditRole pour lire et écrire des données dans model. Si QAbstractItemModel::data() renvoie une chaîne vide pour ce rôle, Qt.DisplayRole sera utilisé à la place.
Vous pouvez toujours assigner votre propre délégué d'édition personnalisé à TableView.editDelegate si vous avez des besoins autres que ceux offerts par le délégué d'édition par défaut.
Voir aussi TreeView.
Documentation sur les propriétés
current : bool
Cette propriété s'applique si le délégué représente le current index dans le selection model.
depth : int
Cette propriété indique la profondeur de l'élément de modèle dessiné par le délégué. La profondeur d'un élément de modèle est la même que le nombre d'ancêtres qu'il a dans le modèle.
editing : bool [since 6.5]
Cette propriété indique si le délégué est en cours d'exécution. edited.
Cette propriété a été introduite dans Qt 6.5.
expanded : bool
Cette propriété est true si l'élément de modèle dessiné par le délégué est développé dans la vue.
hasChildren : bool
Cette propriété est true si l'élément de modèle dessiné par le délégué a des enfants dans le modèle.
indentation : real
Cette propriété définit l'espacement horizontal de l'indentation d'un enfant par rapport à son parent.
isTreeNode : bool
Cette propriété est true si l'élément délégué dessine un nœud dans l'arbre. Une seule colonne de la vue sera utilisée pour dessiner l'arbre et, par conséquent, seuls les éléments délégués de cette colonne auront cette propriété définie sur true.
Un nœud de l'arbre est indented en fonction de son depth, et affiche un indicator si hasChildren est true. Les éléments délégués dans les autres colonnes auront cette propriété définie sur false.
leftMargin : real
Cette propriété définit l'espace entre le bord gauche de la vue et le bord gauche de l'indicateur (en plus de l'indentation). Si aucun indicateur n'est visible, l'espace sera compris entre le bord gauche de l'affichage et le bord gauche de l'élément de contenu.
Voir également rightMargin, indentation, et spacing.
rightMargin : real
Cette propriété définit l'espace entre le bord droit de la vue et le bord droit de l'élément de contenu.
Voir aussi leftMargin, indentation, et spacing.
selected : bool
Cette propriété est valable si le délégué représente une selected index dans la selection model.
treeView : TreeView
Cette propriété pointe vers le site TreeView qui contient l'élément délégué.
© 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.