Auf dieser Seite

TreeViewDelegate QML Type

Ein Delegat, der einem TreeView zugewiesen werden kann. Mehr...

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

ItemDelegate

Eigenschaften

Detaillierte Beschreibung

Baumansicht, die hierarchische Daten mit einem Baumansicht-Delegaten anzeigt

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.