Auf dieser Seite

Element-Positionierer

Positionierer-Elemente sind Container-Elemente, die die Positionen von Elementen in einer deklarativen Benutzeroberfläche verwalten. Positionierer verhalten sich ähnlich wie die Layout-Manager, die bei Standard-Qt-Widgets verwendet werden, mit dem Unterschied, dass sie gleichzeitig selbst Container sind.

Positionierer erleichtern die Arbeit mit vielen Elementen, wenn diese in einem regelmäßigen Layout angeordnet werden müssen.

Qt Quick Layouts können auch verwendet werden, um „ Qt Quick “-Elemente in einer Benutzeroberfläche anzuordnen. Sie verwalten sowohl die Positionen als auch die Größen von Elementen in einer deklarativen Benutzeroberfläche und eignen sich besonders gut für anpassbare Benutzeroberflächen.

Positionierer

Im Grundumfang der grafischen Typen von „ Qt Quick “ ist eine Reihe von Standard-Positionierern enthalten:

Column

Positioniert seine untergeordneten Elemente in einer Spalte

Flow

Positioniert seine untergeordneten Elemente nebeneinander und führt bei Bedarf einen Zeilenumbruch durch

Grid

Ordnet seine untergeordneten Elemente in einer Rasteranordnung an

LayoutMirroring

Eigenschaft zur Spiegelung des Layoutverhaltens

Positioner

Stellt angehängte Eigenschaften bereit, die Angaben dazu enthalten, wo sich ein Element in einem Positionierer befindet

Row

Positioniert seine untergeordneten Elemente in einer Zeile

Spaltenelemente

Drei vertikal übereinander angeordnete Rechtecke mit den Bezeichnungen „Bücher“, „Musik“ und „Filme“

Column Elemente werden verwendet, um Elemente vertikal anzuordnen. Das folgende Beispiel verwendet ein „Column“-Element, um drei „ Rectangle “-Elemente in einem Bereich anzuordnen, der durch ein äußeres „ Item “ definiert ist. Die Eigenschaft „ spacing “ ist so eingestellt, dass zwischen den Rechtecken ein kleiner Abstand besteht.

import QtQuick

Item {
    width: 310; height: 170

    Column {
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter

        spacing: 5

        Rectangle { color: "lightblue"; radius: 10.0
                    width: 300; height: 50
                    Text { anchors.centerIn: parent
                           font.pointSize: 24; text: "Books" } }
        Rectangle { color: "gold"; radius: 10.0
                    width: 300; height: 50
                    Text { anchors.centerIn: parent
                           font.pointSize: 24; text: "Music" } }
        Rectangle { color: "lightgreen"; radius: 10.0
                    width: 300; height: 50
                    Text { anchors.centerIn: parent
                           font.pointSize: 24; text: "Movies" } }
    }
}

Beachten Sie, dass „Column“ direkt von „Item“ erbt; daher muss eine eventuelle Hintergrundfarbe, falls gewünscht, dem übergeordneten „Rectangle“ zugewiesen werden.

„Row“-Elemente

Drei horizontal angeordnete, abgerundete Rechtecke

Row Elemente dienen zur horizontalen Anordnung von Elementen. Im folgenden Beispiel wird ein „Row“-Element verwendet, um drei abgerundete „ Rectangle “-Elemente in einem Bereich anzuordnen, der durch ein äußeres, farbiges „Rectangle“ definiert ist. Die Eigenschaft „ spacing “ ist so eingestellt, dass zwischen den Rechtecken ein kleiner Abstand besteht.

Wir stellen sicher, dass das übergeordnete Rechteck groß genug ist, damit an den Rändern des horizontal zentrierten Zeilenelements etwas Platz verbleibt.

import QtQuick

Rectangle {
    width: 320; height: 110
    color: "#c0c0c0"

    Row {
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter

        spacing: 5

        Rectangle { width: 100; height: 100; radius: 20.0
                    color: "#024c1c" }
        Rectangle { width: 100; height: 100; radius: 20.0
                    color: "#42a51c" }
        Rectangle { width: 100; height: 100; radius: 20.0
                    color: "white" }
    }
}

„Grid“-Elemente

Vier farbige Rechtecke in einem 2×2-Raster mit Abständen

Grid Elemente werden verwendet, um Elemente in einer Raster- oder Tabellenanordnung zu platzieren. Im folgenden Beispiel wird ein „Grid“-Element verwendet, um vier „ Rectangle “-Elemente in einem 2×2-Raster anzuordnen. Wie bei den anderen Positionierelementen kann der Abstand zwischen den Elementen mithilfe der Eigenschaft „ spacing “ festgelegt werden.

import QtQuick

Rectangle {
    width: 112; height: 112
    color: "#303030"

    Grid {
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter
        columns: 2
        spacing: 6

        Rectangle { color: "#aa6666"; width: 50; height: 50 }
        Rectangle { color: "#aaaa66"; width: 50; height: 50 }
        Rectangle { color: "#9999aa"; width: 50; height: 50 }
        Rectangle { color: "#6666aa"; width: 50; height: 50 }
    }
}

Es gibt keinen Unterschied zwischen dem horizontalen und dem vertikalen Abstand zwischen den Elementen, daher muss zusätzlicher Abstand innerhalb der Elemente selbst hinzugefügt werden.

Leere Zellen im Raster müssen durch die Definition von Platzhalterelementen an den entsprechenden Stellen in der Rasterdefinition erstellt werden.

Flusselemente

Textelemente, die in einen schmalen Flow-Container eingebettet sind Textelemente, die in einen breiteren Flow-Container eingebettet sind

Flow Flow-Elemente werden verwendet, um Elemente wie Wörter auf einer Seite anzuordnen, wobei Zeilen oder Spalten aus nicht überlappenden Elementen gebildet werden.

Flusselemente ordnen Elemente ähnlich wie „ Grid “-Elemente an, wobei die Elemente in Zeilen entlang einer Achse (der Nebenachse) angeordnet sind und die Zeilen mit Elementen nebeneinander entlang einer anderen Achse (der Hauptachse) platziert werden. Die Flussrichtung sowie der Abstand zwischen den Elementen werden durch die Eigenschaften „ flow “ und „ spacing “ gesteuert.

Das folgende Beispiel zeigt ein „Flow“-Element, das eine Reihe von „ Text “-Unterelementen enthält. Diese sind ähnlich wie in den Screenshots dargestellt angeordnet.

import QtQuick

Rectangle {
    color: "lightblue"
    width: 300; height: 200

    Flow {
        anchors.fill: parent
        anchors.margins: 4
        spacing: 10

        Text { text: "Text"; font.pixelSize: 40 }
        Text { text: "items"; font.pixelSize: 40 }
        Text { text: "flowing"; font.pixelSize: 40 }
        Text { text: "inside"; font.pixelSize: 40 }
        Text { text: "a"; font.pixelSize: 40 }
        Text { text: "Flow"; font.pixelSize: 40 }
        Text { text: "item"; font.pixelSize: 40 }
    }
}

Die Hauptunterschiede zwischen den Positionierern „Grid“ und „Flow“ bestehen darin, dass Elemente innerhalb eines „Flow“-Elements umbrechen, wenn ihnen auf der Nebenachse der Platz ausgeht, und dass Elemente in einer Zeile möglicherweise nicht mit Elementen in einer anderen Zeile ausgerichtet sind, wenn die Elemente keine einheitlichen Größen haben. Wie bei „Grid“-Elementen gibt es keine unabhängige Steuerung des Abstands zwischen Elementen und zwischen Elementzeilen.

Andere Möglichkeiten zur Positionierung von Elementen

Es gibt mehrere andere Möglichkeiten, Elemente in einer Benutzeroberfläche zu positionieren. Zusätzlich zur grundlegenden Technik, ihre Koordinaten direkt anzugeben, können sie relativ zu anderen Elementen mithilfe von Ankern positioniert oder mit QML-Datenmodellen wie dem Objektmodell verwendet werden.

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