TreeViewDelegate QML Type
Ein Delegat, der einem TreeView zugewiesen werden kann. Mehr...
| Import Statement: | import QtQuick.Controls |
| Since: | Qt 6.3 |
| Inherits: |
Eigenschaften
- 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
Detaillierte Beschreibung

Ein TreeViewDelegate ist ein Delegat, das dem delegate property eines TreeView zugewiesen werden kann. Es rendert den Baum, sowie die anderen Spalten, in der Ansicht unter Verwendung des Anwendungsstils.
TreeView { anchors.fill: parent delegate: TreeViewDelegate {} // The model needs to be a QAbstractItemModel // model: yourTreeModel }
TreeViewDelegate erbt ItemDelegate, was bedeutet, dass es aus drei Elementen besteht: einem background, einem contentItem und einem indicator. TreeViewDelegate kümmert sich um indenting das contentItem und den Indikator entsprechend ihrer Position im Baum. Der Indikator ist nur sichtbar, wenn sich das delegierte Element innerhalb des tree column befindet und ein Modellelement with children wiedergibt.
Wenn Sie den Indikator ändern, wird er nicht mehr standardmäßig eingerückt. Stattdessen müssen Sie ihn selbst einrücken, indem Sie den x position des Indikators unter Berücksichtigung von depth und indentation einstellen. Im Folgenden finden Sie ein Beispiel für diese Vorgehensweise:
TreeViewDelegate { indicator: Item { x: leftMargin + (depth * indentation) } }
Die Position des contentItem wird mit padding gesteuert. Dies bedeutet, dass Sie das contentItem ändern können, ohne sich um die Einrückung zu kümmern. Es bedeutet aber auch, dass Sie es vermeiden sollten, padding in etwas anderes zu ändern, da dadurch die Einrückung entfernt wird. Der Abstand links vom Indikator wird stattdessen mit leftMargin gesteuert. Der Abstand zwischen dem Indikator und dem contentItem wird mit spacing gesteuert. Und der Abstand rechts vom contentItem wird mit rightMargin gesteuert.
Interaktion mit Zeigern
TreeViewDelegate erbt ItemDelegate. Das bedeutet, dass es Signale wie clicked aussendet, wenn der Benutzer auf den Delegaten klickt. Wenn nötig, könnte man eine Verbindung zu diesem Signal herstellen, um anwendungsspezifische Funktionalität zu implementieren, zusätzlich zu dem standardmäßigen Expandieren/Kollabieren Verhalten (und sogar pointerNavigationEnabled auf false setzen, um das Standardverhalten ebenfalls zu deaktivieren).
Die API von ItemDelegate gibt Ihnen jedoch keine Informationen über die Position des Klicks oder darüber, welche Modifikatoren gehalten werden. Wenn dies erforderlich ist, wäre es besser, z. B. Pointer-Handler zu verwenden:
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) } } } }
Hinweis: Wenn Sie das Standardverhalten deaktivieren möchten, das auftritt, wenn der Benutzer auf den Delegaten klickt (wie das Ändern des aktuellen Index), können Sie pointerNavigationEnabled auf false setzen.
Bearbeiten von Knoten im Baum
TreeViewDelegate hat einen Standard edit delegate zugewiesen. Wenn TreeView edit triggers gesetzt ist und model Unterstützung für editing model items hat, dann kann der Benutzer einen der Bearbeitungsauslöser aktivieren, um den Text des Baumknotens current zu bearbeiten.
Der Standard-Editierdelegat wird versuchen, Qt.EditRole zu verwenden, um Daten auf model zu lesen und zu schreiben. Wenn QAbstractItemModel::data() einen leeren String für diese Rolle zurückgibt, wird stattdessen Qt.DisplayRole verwendet.
Sie können jederzeit Ihren eigenen benutzerdefinierten Bearbeitungsdelegaten TableView.editDelegate zuweisen, wenn Sie Bedürfnisse haben, die über das hinausgehen, was der standardmäßige Bearbeitungsdelegat bietet.
Siehe auch TreeView.
Dokumentation der Eigenschaft
current : bool
Diese Eigenschaft gilt, wenn der Delegierte die current index in der selection model vertritt.
depth : int
Diese Eigenschaft enthält die Tiefe des vom Delegaten gezeichneten Modellelements. Die Tiefe eines Modellelements ist gleich der Anzahl der Vorfahren, die es im Modell hat.
editing : bool [since 6.5]
Diese Eigenschaft gibt an, ob der Delegate edited.
Diese Eigenschaft wurde in Qt 6.5 eingeführt.
expanded : bool
Diese Eigenschaft ist true, wenn das vom Delegaten gezeichnete Modellelement in der Ansicht erweitert wird.
hasChildren : bool
Diese Eigenschaft ist true, wenn das vom Delegierten gezeichnete Modellelement Kinder im Modell hat.
indentation : real
Diese Eigenschaft gibt an, wie weit ein untergeordnetes Element im Verhältnis zu seinem übergeordneten Element horizontal eingerückt ist.
isTreeNode : bool
Diese Eigenschaft ist true, wenn das delegierte Element einen Knoten im Baum zeichnet. Es wird nur eine Spalte in der Ansicht verwendet, um den Baum zu zeichnen, und daher wird diese Eigenschaft nur für Delegatenelemente in dieser Spalte auf true gesetzt.
Ein Knoten im Baum ist indented entsprechend seiner depth, und zeigt ein indicator, wenn hasChildren true ist. Für delegierte Elemente in anderen Spalten wird diese Eigenschaft auf false gesetzt.
leftMargin : real
Diese Eigenschaft gibt den Abstand zwischen dem linken Rand der Ansicht und dem linken Rand des Indikators an (zusätzlich zur Einrückung). Wenn kein Indikator sichtbar ist, wird der Abstand zwischen dem linken Rand der Ansicht und dem linken Rand des contentItem festgelegt.
Siehe auch rightMargin, indentation, und spacing.
rightMargin : real
Diese Eigenschaft enthält den Abstand zwischen dem rechten Rand der Ansicht und dem rechten Rand des contentItem.
Siehe auch leftMargin, indentation, und spacing.
selected : bool
Diese Eigenschaft gilt, wenn der Delegierte eine selected index in der selection model darstellt.
treeView : TreeView
Diese Eigenschaft verweist auf die TreeView, die das Delegatenelement enthält.
© 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.