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. Nachstehend 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 zum 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 Editierdelegaten TableView.editDelegate zuweisen, wenn Sie Bedürfnisse haben, die über das hinausgehen, was der Standard Editierdelegat bietet.
Siehe auch TreeView.
Eigenschaft Dokumentation
current : bool |
Diese Eigenschaft gibt an, ob der Delegat die current index in der selection model darstellt.
depth : int |
Diese Eigenschaft enthält die Tiefe des Modellelements, das vom Delegaten gezeichnet wird. Die Tiefe eines Modellelementes ist die gleiche wie die Anzahl der Vorfahren die es im Modell hat.
editing : bool |
Diese Eigenschaft ist gültig, wenn der Delegat gezeichnet wird. 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 Delegaten gezeichnete Modellelement Kinder im Modell hat.
indentation : real |
Diese Eigenschaft gibt den Abstand an, mit dem ein untergeordnetes Element relativ zu seinem übergeordneten Element horizontal eingerückt ist.
isTreeNode : bool |
Diese Eigenschaft ist true
, wenn das vom Delegaten gezeichnete Element einen Knoten in der Baumstruktur zeichnet. Es wird nur eine Spalte in der Ansicht verwendet, um den Baum zu zeichnen, und daher haben nur Delegatenelemente in dieser Spalte diese Eigenschaft auf true
gesetzt.
Ein Knoten im Baum ist indented entsprechend seiner depth
, und zeigt ein indicator, wenn hasChildren true
ist. Delegierte Elemente in anderen Spalten haben diese Eigenschaft auf false
gesetzt.
leftMargin : real |
Diese Eigenschaft enthält den Abstand zwischen dem linken Rand der Ansicht und dem linken Rand des Indikators (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 gibt den Abstand zwischen dem rechten Rand der Ansicht und dem rechten Rand des contentItems an.
Siehe auch leftMargin, indentation, und spacing.
selected : bool |
Diese Eigenschaft gilt, wenn der Delegierte ein selected index in der selection model darstellt.
© 2025 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.