LayoutItemProxy QML Type

Die Klasse LayoutItemProxy bietet einen Platzhalter für QQuickItems in Layouts. Mehr...

Import Statement: import QtQuick.Layouts
Since: QtQuick.Layouts 6.6
Inherits:

Item

Eigenschaften

Detaillierte Beschreibung

Einige responsive Layouts erfordern unterschiedliche Layouthierarchien für verschiedene Bildschirmgrößen, aber die Layouthierarchie ist die gleiche wie die QML-Struktur und kann daher zur Laufzeit nicht geändert werden. LayoutItemProxy überwindet diese Einschränkung, indem es ein target Element innerhalb des Layouts darstellt. Das target Element selbst kann an einer beliebigen Stelle in der QML-Hierarchie definiert werden. Dies ermöglicht die Deklaration von mehreren Layouts mit denselben Inhaltselementen. Die Layouts können ein- und ausgeblendet werden, um zwischen ihnen zu wechseln.

Der LayoutItemProxy wird versuchen, die Kontrolle über das Element target zu übernehmen, wenn es visible ist. Durch die Übernahme der Kontrolle wird das Element target so positioniert und in der Größe verändert, dass es mit der Position und Größe des LayoutItemProxy übereinstimmt. Außerdem setzt der LayoutItemProxy sich selbst als Elternteil des target (um die Zustellung von Ereignissen und eine sinnvolle Zeichenreihenfolge sicherzustellen) und setzt die Sichtbarkeit auf true. Mehrere LayoutItemProxies können das gleiche Element target, aber nur ein LayoutItemProxy kann ein Element zur gleichen Zeit kontrollieren. Daher sollte immer nur einer der Proxys, die auf dasselbe Element abzielen, sichtbar sein. Wenn mehrere Proxys auf dasselbe Element abzielen, aber visible für jeden Proxy auf false gesetzt ist, wird das Element auch unsichtbar sein.

Alle an Layout angehängten Eigenschaften des target, sowie die QQuickItem::implicitWidth und QQuickItem::implicitHeight des target werden vom LayoutItemProxy weitergeleitet. Das LayoutItemProxy bildet das target so genau wie möglich in Bezug auf Layout Eigenschaften und Größe nach. Layout angehängte Eigenschaften können auch explizit auf dem LayoutItemProxy gesetzt werden, was die Weiterleitung der target Eigenschaften stoppt.

Beispielverwendung

Dies ist ein minimalistisches Beispiel, bei dem zwischen zwei Layouts unter Verwendung von Proxys gewechselt wird, um die gleichen Elemente in beiden Layouts zu verwenden. Die Elemente, die die Layouts bevölkern, können an einer beliebigen Stelle in der QML-Struktur definiert werden.

Rectangle {
    id: rectangle1
    color: "tomato"
    Layout.fillHeight: true
    Layout.fillWidth: true
}

Rectangle {
    id: rectangle2
    color: "lightskyblue"
    Layout.fillHeight: true
    Layout.fillWidth: true
}

Dann können wir die Layouts mit LayoutItemProxys definieren

GridLayout {
    id: l1
    columns: 1
    visible: false
    anchors.fill: parent
    LayoutItemProxy { target: rectangle1 }
    LayoutItemProxy { target: rectangle2 }
}

GridLayout {
    id: l2
    columns: 2
    visible: true
    anchors.fill: parent
    LayoutItemProxy { target: rectangle1 }
    LayoutItemProxy { target: rectangle2 }
}

Wir können nun zwischen den Layouts umschalten, abhängig von einem Kriterium unserer Wahl, indem wir die Sichtbarkeit der Layouts ein- und ausschalten.

onWidthChanged: {
    if (width < 300) {
        l2.visible = false
        l1.visible = true
    } else {
        l1.visible = false
        l2.visible = true
    }
}

Die beiden resultierenden Layouts sehen wie folgt aus:

Der LayoutItemProxy kann auch ohne Layouts verwendet werden, z.B. durch Verankerung an verschiedenen Elementen. Eine Mischung aus echten Items und Proxy-Elementen ist ebenso möglich wie verschachtelte Strukturen aus Layouts und Elementen.

Achtung! Der LayoutItemProxy setzt den Parent seines Ziels auf sich selbst. Behalten Sie dies im Hinterkopf, wenn Sie sich auf das übergeordnete Element des Zielobjekts beziehen.

Siehe auch Item, GridLayout, RowLayout, und ColumnLayout.

Eigenschaft Dokumentation

target : Item

Diese Eigenschaft enthält die Item, die der Proxy in einer Layout Hierarchie darstellen soll.


© 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.