Auf dieser Seite

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:

QHBoxLayout und QVBoxLayout

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

Fünf Schaltflächen in horizontaler Anordnung

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

Fünf Schaltflächen in vertikaler Anordnung

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.

KonstanteWertBeschreibung
QBoxLayout::LeftToRight0Horizontal von links nach rechts.
QBoxLayout::RightToLeft1Horizontal von rechts nach links.
QBoxLayout::TopToBottom2Vertikal von oben nach unten.
QBoxLayout::BottomToTop3Vertikal 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.