QBoxLayout Class
Die Klasse „QBoxLayout“ ordnet untergeordnete Widgets horizontal oder vertikal an. Mehr...
| Überschrift: | #include <QBoxLayout> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QLayout |
| Vererbt an: |
Öffentliche Typen
| enum | Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop } |
Öffentliche Funktionen
| QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr) | |
| virtual | ~QBoxLayout() |
| void | addLayout(QLayout *layout, int stretch = 0) |
| void | addSpacerItem(QSpacerItem *spacerItem) |
| void | addSpacing(int size) |
| void | addStretch(int stretch = 0) |
| void | addStrut(int size) |
| void | addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) |
| QBoxLayout::Direction | direction() const |
| void | insertItem(int index, QLayoutItem *item) |
| void | insertLayout(int index, QLayout *layout, int stretch = 0) |
| void | insertSpacerItem(int index, QSpacerItem *spacerItem) |
| void | insertSpacing(int index, int size) |
| void | insertStretch(int index, int stretch = 0) |
| void | insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) |
| void | setDirection(QBoxLayout::Direction direction) |
| void | setStretch(int index, int stretch) |
| bool | setStretchFactor(QWidget *widget, int stretch) |
| bool | setStretchFactor(QLayout *layout, int stretch) |
| int | stretch(int index) const |
Neu implementierte öffentliche Funktionen
| virtual void | addItem(QLayoutItem *item) override |
| virtual int | count() const override |
| virtual Qt::Orientations | expandingDirections() const override |
| virtual bool | hasHeightForWidth() const override |
| virtual int | heightForWidth(int w) const override |
| virtual void | invalidate() override |
| virtual QLayoutItem * | itemAt(int index) const override |
| virtual QSize | maximumSize() const override |
| virtual int | minimumHeightForWidth(int w) const override |
| virtual QSize | minimumSize() const override |
| virtual void | setGeometry(const QRect &r) override |
| virtual void | setSpacing(int spacing) override |
| virtual QSize | sizeHint() const override |
| virtual int | spacing() const override |
| virtual QLayoutItem * | takeAt(int index) override |
Ausführliche Beschreibung
QBoxLayout nimmt den ihm zur Verfügung gestellten Platz (vom übergeordneten Layout oder von der Funktion ` parentWidget()`) ein, unterteilt ihn in eine Reihe von Feldern und sorgt dafür, dass jedes verwaltete Widget ein Feld ausfüllt.

Wenn die Ausrichtung des QBoxLayout „ Qt::Horizontal “ ist, werden die Boxen in einer Reihe mit geeigneten Größen angeordnet. Jedes Widget (oder jede andere Box) erhält mindestens seine Mindestgröße und höchstens seine Höchstgröße. Überschüssiger Platz wird entsprechend den Stretch-Faktoren aufgeteilt (mehr dazu weiter unten).

Wenn die Ausrichtung des QBoxLayouts „ Qt::Vertical “ lautet, werden die Felder in einer Spalte angeordnet, wiederum mit geeigneten Größen.
Am einfachsten lässt sich ein QBoxLayout mit einer der Hilfs-Klassen erstellen, z. B. „ QHBoxLayout “ (für „ Qt::Horizontal “-Boxen) oder „ QVBoxLayout “ (für „ Qt::Vertical “-Boxen). Sie können auch direkt den Konstruktor von QBoxLayout verwenden und dabei die Ausrichtung als „ LeftToRight “, „ RightToLeft “, „ TopToBottom “ oder „ BottomToTop “ angeben.
Wenn das QBoxLayout nicht das oberste Layout ist (d. h. es verwaltet nicht den gesamten Bereich des Widgets und dessen untergeordnete Elemente), müssen Sie es zu seinem übergeordneten Layout hinzufügen, bevor Sie damit arbeiten können. Normalerweise fügen Sie ein Layout hinzu, indem Sie `parentLayout->addLayout()` aufrufen.
Sobald Sie dies getan haben, können Sie dem QBoxLayout mithilfe einer der folgenden vier Funktionen Boxen hinzufügen:
- addWidget() zum Hinzufügen eines Widgets zum QBoxLayout und zum Festlegen des Dehnungsfaktors des Widgets. (Der Dehnungsfaktor bezieht sich auf die Zeile der Boxen.)
- addSpacing() zum Erstellen eines leeren Feldes; dies ist eine der Funktionen, mit denen Sie ansprechende und großzügig gestaltete Dialoge erstellen können. Weiter unten finden Sie Möglichkeiten zum Festlegen von Rändern.
- addStretch() zum Erstellen eines leeren, dehnbaren Feldes.
- addLayout() um ein Feld, das ein weiteres „ QLayout “ enthält, zur Zeile hinzuzufügen und den Dehnungsfaktor dieses Layouts festzulegen.
Verwenden Sie „ insertWidget “ (), „ insertSpacing “ (), „ insertStretch “ () oder „ insertLayout “ (), um ein Feld an einer bestimmten Position im Layout einzufügen.
QBoxLayout verfügt außerdem über zwei Randbreiten:
- setContentsMargins() legt die Breite des äußeren Rahmens auf jeder Seite des Widgets fest. Dies ist die Breite des reservierten Platzes entlang jeder der vier Seiten des QBoxLayouts.
- setSpacing() legt die Breite zwischen benachbarten Boxen fest. (Mit ` addSpacing()` können Sie an einer bestimmten Stelle mehr Platz schaffen.)
Der Standardwert für den Rand wird durch den Stil vorgegeben. Der Standardrand, den die meisten Qt-Stile festlegen, beträgt 9 für untergeordnete Widgets und 11 für Fenster. Der Abstand entspricht standardmäßig der Randbreite eines Layouts der obersten Ebene oder der des übergeordneten Layouts.
Um ein Widget aus einem Layout zu entfernen, rufen Sie ` removeWidget()` auf. Der Aufruf von ` QWidget::hide()` für ein Widget entfernt das Widget ebenfalls effektiv aus dem Layout, bis ` QWidget::show()` aufgerufen wird.
Aufgrund ihrer praktischen Konstruktoren werden Sie fast immer „ QVBoxLayout “ und „ QHBoxLayout “ anstelle von „QBoxLayout“ verwenden wollen.
Siehe auch „ QGridLayout “, „ QStackedLayout “ und „Layout-Verwaltung“.
Dokumentation zu Mitgliedstypen
enum QBoxLayout::Direction
Dieser Typ dient zur Festlegung der Ausrichtung eines Box-Layouts.
| Konstante | Wert | Beschreibung |
|---|---|---|
QBoxLayout::LeftToRight | 0 | Horizontal von links nach rechts. |
QBoxLayout::RightToLeft | 1 | Horizontal von rechts nach links. |
QBoxLayout::TopToBottom | 2 | Vertikal von oben nach unten. |
QBoxLayout::BottomToTop | 3 | Vertikal von unten nach oben. |
Dokumentation der Member-Funktionen
[explicit] QBoxLayout::QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)
Erstellt ein neues QBoxLayout mit der Ausrichtung „ dir “ und dem übergeordneten Widget „ parent “.
Das Layout wird direkt als oberstes Layout für parent festgelegt. Für ein Widget kann es nur ein oberstes Layout geben. Es wird von QWidget::layout() zurückgegeben.
Siehe auch „ direction()“ und „ QWidget::setLayout()“.
[virtual noexcept] QBoxLayout::~QBoxLayout()
Löst dieses Box-Layout auf.
Die Widgets des Layouts werden nicht gelöscht.
[override virtual] void QBoxLayout::addItem(QLayoutItem *item)
Implementiert: QLayout::addItem(QLayoutItem *item).
void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)
Fügt „ layout “ am Ende des Box-Layouts hinzu, mit dem seriellen Streckfaktor „ stretch “.
layout Wird zu einem untergeordneten Element des Box-Layouts.
Siehe auch insertLayout(), addItem() und addWidget().
void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)
Fügt „ spacerItem “ am Ende dieses Box-Layouts hinzu.
Die Eigentumsrechte an „ spacerItem “ werden an dieses Layout übertragen.
Siehe auch „ addSpacing()“ und „ addStretch()“.
void QBoxLayout::addSpacing(int size)
Fügt am Ende dieses Box-Layouts einen nicht dehnbaren Abstand (ein „ QSpacerItem “) mit der Größe „ size “ hinzu. „ QBoxLayout “ legt Standardwerte für Ränder und Abstände fest. Diese Funktion fügt zusätzlichen Abstand hinzu.
Siehe auch insertSpacing(), addItem() und QSpacerItem.
void QBoxLayout::addStretch(int stretch = 0)
Fügt am Ende dieses Box-Layouts einen dehnbaren Bereich (ein „ QSpacerItem “) mit einer Mindestgröße von Null und einem Dehnungsfaktor von stretch hinzu.
Siehe auch insertStretch(), addItem() und QSpacerItem.
void QBoxLayout::addStrut(int size)
Begrenzt die senkrechte Abmessung der Box (z. B. die Höhe, wenn die Box „ LeftToRight “ ist) auf mindestens „ size “. Andere Einschränkungen können diesen Grenzwert erhöhen.
Siehe auch addItem().
void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
Fügt „ widget “ am Ende dieses Box-Layouts hinzu, mit einem Stretch-Faktor von „ stretch “ und der Ausrichtung „ alignment “.
Der Dehnungsfaktor gilt nur innerhalb des „ direction “ des „ QBoxLayout “ und bezieht sich relativ auf die anderen Boxen und Widgets in diesem „ QBoxLayout “. Widgets und Boxen mit höheren Dehnungsfaktoren werden stärker vergrößert.
Wenn der Stretch-Faktor 0 ist und kein anderes Element im „ QBoxLayout “ einen Stretch-Faktor größer als Null hat, wird der Platz entsprechend der „ QWidget::sizePolicy()“ jedes beteiligten Widgets verteilt.
Die Ausrichtung wird durch ` alignment` festgelegt. Die Standardausrichtung ist 0, was bedeutet, dass das Widget die gesamte Zelle ausfüllt.
widget wird zu einem untergeordneten Element des QLayout::parentWidget().
Siehe auch insertWidget(), addItem(), addLayout(), addStretch(), addSpacing() und addStrut().
[override virtual] int QBoxLayout::count() const
Implementiert: ` QLayout::count()` const.
QBoxLayout::Direction QBoxLayout::direction() const
Gibt die Ausrichtung der Box zurück. Die Funktionen „ addWidget()“ und „ addSpacing()“ wirken in dieser Richtung; die Dehnung erfolgt in dieser Richtung.
Siehe auch setDirection(), QBoxLayout::Direction, addWidget() und addSpacing().
[override virtual] Qt::Orientations QBoxLayout::expandingDirections() const
Implementiert erneut: ` QLayout::expandingDirections()` const.
[override virtual] bool QBoxLayout::hasHeightForWidth() const
Implementiert erneut: ` QLayoutItem::hasHeightForWidth()` const.
[override virtual] int QBoxLayout::heightForWidth(int w) const
Implementiert neu: ` QLayoutItem::heightForWidth(int) const`.
void QBoxLayout::insertItem(int index, QLayoutItem *item)
Fügt „ item “ an der Position „ index “ in dieses Box-Layout ein. Der Index muss entweder negativ sein oder im Bereich von 0 bis count() liegen (einschließlich). Ist „ index “ negativ oder count(), wird das Element am Ende hinzugefügt.
Die Eigentumsrechte an item werden an dieses Layout übertragen.
Siehe auch addItem(), insertWidget(), insertLayout(), insertStretch() und insertSpacing().
void QBoxLayout::insertLayout(int index, QLayout *layout, int stretch = 0)
Fügt „ layout “ an der Position „ index “ mit dem Stretch-Faktor „ stretch “ ein. Ist „ index “ negativ, wird das Layout am Ende hinzugefügt.
layout wird zu einem untergeordneten Element des Box-Layouts.
Siehe auch addLayout() und insertItem().
void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)
Fügt „ spacerItem “ an der Position „ index “ ein, mit einer Mindestgröße von Null und einem Dehnungsfaktor von Null. Ist „ index “ negativ, wird der Abstand am Ende hinzugefügt.
Die Eigentumsrechte an spacerItem werden an dieses Layout übertragen.
Siehe auch addSpacerItem(), insertStretch() und insertSpacing().
void QBoxLayout::insertSpacing(int index, int size)
Fügt an der Position „ index “ einen nicht dehnbaren Abstand (ein „ QSpacerItem “) mit der Größe „ size “ ein. Ist „ index “ negativ, wird der Abstand am Ende eingefügt.
Das Box-Layout verfügt über Standardränder und -abstände. Diese Funktion fügt zusätzlichen Abstand hinzu.
Siehe auch addSpacing(), insertItem() und QSpacerItem.
void QBoxLayout::insertStretch(int index, int stretch = 0)
Fügt an der Position index ein dehnbares Leerzeichen (ein „ QSpacerItem “) ein, mit einer Mindestgröße von Null und dem Dehnungsfaktor stretch. Ist index negativ, wird das Leerzeichen am Ende eingefügt.
Siehe auch addStretch(), insertItem() und QSpacerItem.
void QBoxLayout::insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
Fügt „ widget “ an der Position „ index “ ein, mit dem Stretch-Faktor „ stretch “ und der Ausrichtung „ alignment “. Ist „ index “ negativ, wird das Widget am Ende hinzugefügt.
Der Stretch-Faktor gilt nur innerhalb des „ direction “ des „ QBoxLayout “ und bezieht sich relativ auf die anderen Boxen und Widgets in diesem „ QBoxLayout “. Widgets und Boxen mit höheren Stretch-Faktoren werden stärker vergrößert.
Wenn der Stretch-Faktor 0 ist und kein anderes Element im „ QBoxLayout “ einen Stretch-Faktor größer als Null hat, wird der Platz entsprechend der „ QWidget::sizePolicy()“ jedes beteiligten Widgets verteilt.
Die Ausrichtung wird durch ` alignment` festgelegt. Die Standardausrichtung ist 0, was bedeutet, dass das Widget die gesamte Zelle ausfüllt.
widget wird zu einem untergeordneten Element des „ QLayout::parentWidget “ ().
Siehe auch „ addWidget “ () und „ insertItem “ ().
[override virtual] void QBoxLayout::invalidate()
Implementiert: ` QLayout::invalidate()`.
Setzt zwischengespeicherte Informationen zurück.
[override virtual] QLayoutItem *QBoxLayout::itemAt(int index) const
Implementiert neu: ` QLayout::itemAt(int index) const`.
[override virtual] QSize QBoxLayout::maximumSize() const
Implementiert: ` QLayout::maximumSize()` const.
[override virtual] int QBoxLayout::minimumHeightForWidth(int w) const
Implementiert erneut: ` QLayoutItem::minimumHeightForWidth(int w) const`.
[override virtual] QSize QBoxLayout::minimumSize() const
Implementiert: ` QLayout::minimumSize()` const.
void QBoxLayout::setDirection(QBoxLayout::Direction direction)
Legt die Ausrichtung dieses Layouts auf „ direction “ fest.
Siehe auch direction().
[override virtual] void QBoxLayout::setGeometry(const QRect &r)
Implementiert: ` QLayout::setGeometry(const QRect &r)`.
[override virtual] void QBoxLayout::setSpacing(int spacing)
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QLayout::spacing “ neu.
Implementiert „ QLayout::setSpacing()“ neu. Setzt die Eigenschaft „spacing“ auf „ spacing “.
Siehe auch „ QLayout::setSpacing()“ und „ spacing()“.
void QBoxLayout::setStretch(int index, int stretch)
Setzt den Dehnungsfaktor an der Position index auf stretch.
Siehe auch stretch().
bool QBoxLayout::setStretchFactor(QWidget *widget, int stretch)
Setzt den Stretch-Faktor für „ widget “ auf „ stretch “ und gibt „true“ zurück, wenn „ widget “ in diesem Layout gefunden wird (ohne untergeordnete Layouts); andernfalls wird „ false “ zurückgegeben.
Siehe auch setAlignment().
bool QBoxLayout::setStretchFactor(QLayout *layout, int stretch)
Setzt den Stretch-Faktor für das Layout „ layout “ auf „ stretch “ und gibt „ true “ zurück, wenn „ layout “ in diesem Layout gefunden wird (ohne untergeordnete Layouts); andernfalls wird „ false “ zurückgegeben.
Dies ist eine überladene Funktion.
[override virtual] QSize QBoxLayout::sizeHint() const
Implementiert: ` QLayoutItem::sizeHint()` const.
[override virtual] int QBoxLayout::spacing() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QLayout::spacing “ neu.
Implementiert „ QLayout::spacing()“ neu. Ist die Eigenschaft „spacing“ gültig, wird dieser Wert zurückgegeben. Andernfalls wird ein Wert für die Eigenschaft „spacing“ berechnet und zurückgegeben. Da der Layout-Abstand in einem Widget stilabhängig ist, fragt das Widget, falls das übergeordnete Element ein Widget ist, den Stil nach dem (horizontalen oder vertikalen) Abstand des Layouts ab. Andernfalls ist das übergeordnete Element ein Layout, und es fragt das übergeordnete Layout nach dem Abstand (spacing()).
Siehe auch ` QLayout::spacing()` und ` setSpacing()`.
int QBoxLayout::stretch(int index) const
Gibt den Stretch-Faktor an der Position index zurück.
Siehe auch setStretch().
[override virtual] QLayoutItem *QBoxLayout::takeAt(int index)
Implementiert: QLayout::takeAt(int index).
© 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.