Sur cette page

TreeViewDelegate QML Type

Un délégué pouvant être attribué à une TreeView. En savoir plus…

Import Statement: import QtQuick.Controls
Since: Qt 6.3
Inherits:

ItemDelegate

Propriétés

Description détaillée

Arborescence affichant des données hiérarchiques à l'aide d'un délégué d'arborescence

Un TreeViewDelegate est un délégué pouvant être attribué à l'delegate property d'un TreeView. Il affiche l'arborescence, 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 se compose 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’arborescence. L’indicateur ne sera visible que si l’élément délégué se trouve à l’intérieur de l’ tree column, et affiche un élément de modèle with children.

Si vous modifiez l’indicateur, celui-ci ne sera plus indenté par défaut. Vous devrez alors l’indenter vous-même en définissant la propriété ` x position ` de l’indicateur, en tenant compte des propriétés ` depth ` et ` indentation `. Voici un exemple illustrant comment procéder :

TreeViewDelegate {
    indicator: Item {
        x: leftMargin + (depth * indentation)
    }
}

La position du `contentItem` est contrôlée par ` padding`. Cela signifie que vous pouvez modifier le `contentItem` sans vous soucier de l’indentation. Mais cela signifie également que vous devez éviter de modifier la marge intérieure (`padding`), car cela supprimerait l’indentation. L'espace à gauche de l'indicateur est quant à lui contrôlé par ` leftMargin`. L'espace entre l'indicateur et l'élément `contentItem` est contrôlé par ` spacing`. Et l'espace à droite de l'élément `contentItem` 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 clique sur le délégué. Si nécessaire, vous pouvez vous connecter à ce signal pour implémenter des fonctionnalités spécifiques à votre application, en plus du comportement par défaut d’expansion/réduction (et même définir pointerNavigationEnabled sur false, pour désactiver également le comportement par défaut).

Cependant, l’API ` ItemDelegate ` ne fournit aucune information sur la position du clic ni sur les touches de modification enfoncées. Si cela s’avère nécessaire, une meilleure approche consisterait à utiliser des gestionnaires de pointeur, 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 dans l’arborescence

TreeViewDelegate dispose d’un edit delegate attribué par défaut. Si TreeView a edit triggers défini, et si l’ model prend en charge editing model items, alors l’utilisateur peut activer n’importe lequel des déclencheurs d’édition pour modifier le texte du nœud d’arborescence current.

Le délégué d’édition par défaut tentera 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, c’est alors Qt.DisplayRole qui sera utilisé à la place.

Vous pouvez à tout moment attribuer votre propre délégué d’édition personnalisé à TableView.editDelegate si vos besoins dépassent les capacités offertes par le délégué d’édition par défaut.

Voir également TreeView.

Documentation sur les propriétés

current : bool

Cette propriété est vérifiée si le délégué représente l’ current index, dans l’ selection model.

depth : int

Cette propriété contient la profondeur de l'élément du modèle dessiné par le délégué. La profondeur d'un élément du modèle correspond au nombre de ses ancêtres dans le modèle.

editing : bool [since 6.5]

Cette propriété s'applique si le délégué est edited.

Cette propriété a été introduite dans Qt 6.5.

expanded : bool

Cette propriété prend la valeur « true » si l'élément du modèle dessiné par le délégué est développé dans la vue.

hasChildren : bool

Cette propriété prend la valeur « true » si l'élément du modèle dessiné par le délégué comporte des éléments enfants dans le modèle.

indentation : real

Cette propriété indique l'espacement horizontal d'un élément enfant par rapport à son élément parent.

isTreeNode : bool

Cette propriété prend la valeur « true » si l'élément délégué dessine un nœud dans l'arborescence. Une seule colonne de la vue sera utilisée pour dessiner l'arborescence ; par conséquent, seuls les éléments délégués de cette colonne verront cette propriété définie sur « true ».

Un nœud de l’arborescence est « indented » (délégué) en fonction de sa valeur « depth » (délégué), et affiche une « indicator » (délégué) si « hasChildren » (délégué) est « true » (délégué). Les éléments délégués des autres colonnes auront cette propriété définie sur « false » (délégué).

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, cet espace correspondra à la distance entre le bord gauche de la vue et le bord gauche de l'élément de contenu.

Voir également rightMargin, indentation et spacing.

rightMargin : real

Cette propriété représente l'espace entre le bord droit de la vue et le bord droit de l'élément de contenu.

Voir également leftMargin, indentation et spacing.

selected : bool

Cette propriété est vérifiée si le délégué représente une « selected index » dans l'selection model.

treeView : TreeView

Cette propriété pointe vers l'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.