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

Ausführliche Beschreibung

Baumansicht zur Darstellung hierarchischer Daten mithilfe eines Baumansicht-Delegaten

Ein „TreeViewDelegate“ ist ein Delegat, der dem „ delegate property “ eines „ TreeView “ zugewiesen werden kann. Er 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 von „ ItemDelegate “, was bedeutet, dass er aus drei Elementen besteht: einem „ background “, einem „ contentItem “ und einem „ indicator “. TreeViewDelegate übernimmt die „ indenting “ des „contentItem“ und des „indicator“ entsprechend ihrer Position in der Baumstruktur. Der „indicator“ ist nur sichtbar, wenn sich das Delegate-Element innerhalb des „ tree column “ befindet, und rendert ein Modellelement „ with children “.

Wenn Sie den Indikator ändern, wird er standardmäßig nicht mehr eingerückt. Stattdessen müssen Sie ihn selbst einrücken, indem Sie die „ x position “ des Indikators festlegen und dabei die „ depth “ und „ indentation “ berücksichtigen. Nachfolgend finden Sie ein Beispiel dafür:

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

Die Position des „contentItem“ wird über „ padding “ gesteuert. Das bedeutet, dass Sie das „contentItem“ ändern können, ohne sich um die Einrückung kümmern zu müssen. Es bedeutet aber auch, dass Sie es vermeiden sollten, den Abstand („padding“) auf einen anderen Wert zu setzen, 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 von ` ItemDelegate`. Das bedeutet, dass es Signale wie ` clicked ` aussendet, wenn der Benutzer auf den Delegaten klickt. Bei Bedarf können Sie eine Verbindung zu diesem Signal herstellen, um zusätzlich zum standardmäßigen Ein- und Ausklappverhalten anwendungsspezifische Funktionen zu implementieren (und sogar ` pointerNavigationEnabled ` auf ` false` setzen, um das Standardverhalten ebenfalls zu deaktivieren).

Die „ ItemDelegate “-API liefert jedoch keine Informationen über die Position des Klicks oder darüber, welche Modifikatortasten gedrückt gehalten werden. Wenn dies erforderlich ist, wäre es besser, Zeiger-Handler zu verwenden, zum Beispiel:

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 (z. B. das Ändern des aktuellen Index), können Sie ` pointerNavigationEnabled ` auf ` false` setzen.

Bearbeiten von Knoten in der Baumstruktur

„TreeViewDelegate“ verfügt über einen zugewiesenen Standard- edit delegate. Wenn für „ TreeView “ „ edit triggers “ festgelegt ist und der „ model “ „ editing model items “ unterstützt, kann der Benutzer jeden der Bearbeitungsauslöser aktivieren, um den Text des „ current “-Baumknotens zu bearbeiten.

Der Standard-Bearbeitungsdelegat versucht, die „ Qt.EditRole “ zum Lesen und Schreiben von Daten in die „ model “ zu verwenden. Wenn „ QAbstractItemModel::data()“ für diese Rolle eine leere Zeichenkette zurückgibt, wird stattdessen „ Qt.DisplayRole “ verwendet.

Sie können „ TableView.editDelegate “ jederzeit einen eigenen, benutzerdefinierten Bearbeitungsdelegaten zuweisen, falls Sie Anforderungen haben, die über die Möglichkeiten des Standard-Bearbeitungsdelegaten hinausgehen.

Siehe auch TreeView.

Dokumentation zu den Eigenschaften

current : bool

Diese Eigenschaft gilt, wenn der Delegat die „ current index “ in der „ selection model “ repräsentiert.

depth : int

Diese Eigenschaft enthält die Tiefe des vom Delegaten gezeichneten Modellelements. Die Tiefe eines Modellelements entspricht der Anzahl seiner Vorfahren im Modell.

editing : bool [since 6.5]

Diese Eigenschaft gilt, wenn der Delegat 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 ist.

hasChildren : bool

Diese Eigenschaft ist „ true “, wenn das vom Delegaten gezeichnete Modellelement im Modell untergeordnete Elemente enthält.

indentation : real

Diese Eigenschaft gibt den horizontalen Einzug eines Kindes relativ zu seinem übergeordneten Element an.

isTreeNode : bool

Diese Eigenschaft lautet „ true “, wenn das Delegate-Element einen Knoten im Baum zeichnet. Zum Zeichnen des Baums wird nur eine Spalte in der Ansicht verwendet; daher wird diese Eigenschaft nur für Delegate-Elemente in dieser Spalte auf „ true “ gesetzt.

Ein Knoten in der Baumstruktur ist entsprechend seinem Wert für „ depth “ „ indented “ und zeigt ein „ indicator “, wenn „ hasChildren “ auf „ true “ gesetzt ist. Bei Delegat-Elementen in anderen Spalten ist 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). Ist kein Indikator sichtbar, bezieht sich der Abstand auf den Abstand zwischen dem linken Rand der Ansicht und dem linken Rand des contentItem.

Siehe auch rightMargin, indentation und spacing.

rightMargin : real

Diese Eigenschaft gibt den Abstand zwischen dem rechten Rand der Ansicht und dem rechten Rand des contentItem an.

Siehe auch leftMargin, indentation und spacing.

selected : bool

Diese Eigenschaft gilt, wenn der Delegat ein „ selected index “ im „ selection model “ darstellt.

treeView : TreeView

Diese Eigenschaft verweist auf das „ TreeView “, das das Delegat-Element 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.