QBoxLayout Class

Die Klasse QBoxLayout ordnet untergeordnete Widgets horizontal oder vertikal an. Mehr...

Kopfzeile: #include <QBoxLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: QLayout
Vererbt von:

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

Reimplementierte ö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

Detaillierte Beschreibung

QBoxLayout nimmt den Platz, den es erhält (von seinem übergeordneten Layout oder von parentWidget()), teilt ihn in eine Reihe von Boxen auf und sorgt dafür, dass jedes verwaltete Widget eine Box füllt.

Horizontal box layout with five child widgets

Wenn die Ausrichtung des QBoxLayouts Qt::Horizontal ist, werden die Boxen in einer Reihe mit geeigneten Größen platziert. Jedes Widget (oder andere Box) erhält mindestens seine Mindestgröße und höchstens seine Maximalgröße. Überschüssiger Platz wird entsprechend den Streckungsfaktoren aufgeteilt (mehr dazu weiter unten).

Vertical box layout with five child widgets

Wenn die Ausrichtung des QBoxLayouts Qt::Vertical ist, werden die Boxen in einer Spalte platziert, wiederum mit geeigneten Größen.

Der einfachste Weg, ein QBoxLayout zu erstellen, ist die Verwendung einer der Komfortklassen, z. B. QHBoxLayout (für Qt::Horizontal Boxen) oder QVBoxLayout (für Qt::Vertical Boxen). Sie können auch direkt den QBoxLayout-Konstruktor verwenden und dabei die Richtung LeftToRight, RightToLeft, TopToBottom oder BottomToTop angeben.

Wenn das QBoxLayout nicht das Layout der obersten Ebene ist (d. h. es verwaltet nicht alle Bereiche und untergeordneten Elemente des Widgets), müssen Sie es zu seinem übergeordneten Layout hinzufügen, bevor Sie etwas damit tun können. Der normale Weg, ein Layout hinzuzufügen, ist der Aufruf von parentLayout->addLayout().

Danach können Sie dem QBoxLayout mithilfe einer der folgenden vier Funktionen Rahmen hinzufügen:

  • addWidget(), um ein Widget zum QBoxLayout hinzuzufügen und den Streckungsfaktor des Widgets festzulegen. (Der Streckungsfaktor bezieht sich auf die Reihe der Boxen.)
  • addSpacing(), um eine leere Box zu erstellen; dies ist eine der Funktionen, die Sie verwenden, um schöne und geräumige Dialoge zu erstellen. Siehe unten für Möglichkeiten, Ränder zu setzen.
  • addStretch() um eine leere, dehnbare Box zu erstellen.
  • addLayout(), um der Zeile einen Rahmen hinzuzufügen, der ein anderes QLayout enthält, und den Dehnungsfaktor dieses Layouts festzulegen.

Verwenden Sie insertWidget(), insertSpacing(), insertStretch() oder insertLayout(), um einen Rahmen an einer bestimmten Position im Layout einzufügen.

QBoxLayout enthält auch zwei Randbreiten:

  • setContentsMargins() legt die Breite des äußeren Randes auf jeder Seite des Widgets fest. Dies ist die Breite des reservierten Raums entlang jeder der vier Seiten des QBoxLayouts.
  • setSpacing() legt die Breite zwischen benachbarten Boxen fest. (Sie können addSpacing() verwenden, um mehr Platz an einer bestimmten Stelle zu erhalten).

Der Standardrand wird durch den Stil vorgegeben. Der Standardrand, den die meisten Qt-Stile angeben, ist 9 für untergeordnete Widgets und 11 für Fenster. Der Abstand ist standardmäßig derselbe wie die Randbreite für ein Layout der obersten Ebene oder derselbe wie für das übergeordnete Layout.

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 aus dem Layout, bis QWidget::show() aufgerufen wird.

Sie werden fast immer eher QVBoxLayout und QHBoxLayout als QBoxLayout verwenden wollen, da diese Konstruktoren sehr praktisch sind.

Siehe auch QGridLayout, QStackedLayout, und Layout Management.

Dokumentation der Mitgliedstypen

enum QBoxLayout::Direction

Dieser Typ wird verwendet, um die Richtung eines Box-Layouts zu bestimmen.

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 Mitgliedsfunktionen

[explicit] QBoxLayout::QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)

Konstruiert ein neues QBoxLayout mit der Richtung dir und dem übergeordneten Widget parent.

Das Layout wird direkt als Top-Level-Layout für parent festgelegt. Es kann nur ein Layout der obersten Ebene für ein Widget geben. Es wird von QWidget::layout() zurückgegeben.

Siehe auch direction() und QWidget::setLayout().

[virtual noexcept] QBoxLayout::~QBoxLayout()

Zerstört dieses Box-Layout.

Die Widgets des Layouts werden nicht zerstört.

[override virtual] void QBoxLayout::addItem(QLayoutItem *item)

Reimplements: QLayout::addItem(QLayoutItem *item).

void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)

Fügt layout am Ende der Box ein, mit dem seriellen Streckungsfaktor stretch.

Siehe auch insertLayout(), addItem(), und addWidget().

void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)

Fügt spacerItem an das Ende dieses Box-Layouts an.

Siehe auch addSpacing() und addStretch().

void QBoxLayout::addSpacing(int size)

Fügt einen nicht dehnbaren Abstand ( QSpacerItem) mit der Größe size am Ende dieses Box-Layouts ein. QBoxLayout bietet Standardränder und -abstände. Diese Funktion fügt zusätzlichen Abstand hinzu.

Siehe auch insertSpacing(), addItem(), und QSpacerItem.

void QBoxLayout::addStretch(int stretch = 0)

Fügt einen dehnbaren Bereich ( QSpacerItem) mit der Mindestgröße Null und dem Dehnungsfaktor stretch am Ende dieses Box-Layouts ein.

Siehe auch insertStretch(), addItem(), und QSpacerItem.

void QBoxLayout::addStrut(int size)

Begrenzt die senkrechte Abmessung des Kastens (z. B. die Höhe, wenn der Kasten LeftToRight ist) auf ein Minimum von size. Andere Beschränkungen können die Grenze erhöhen.

Siehe auch addItem().

void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

Fügt widget an das Ende dieses Box-Layouts an, mit einem Streckungsfaktor von stretch und der Ausrichtung alignment.

Der Streckungsfaktor gilt nur für die direction des QBoxLayout und ist relativ zu den anderen Boxen und Widgets in diesem QBoxLayout. Widgets und Boxen mit höheren Dehnungsfaktoren wachsen stärker.

Wenn der Streckungsfaktor 0 ist und nichts anderes im QBoxLayout einen Streckungsfaktor 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.

Siehe auch insertWidget(), addItem(), addLayout(), addStretch(), addSpacing(), und addStrut().

[override virtual] int QBoxLayout::count() const

Reimplements: QLayout::count() const.

QBoxLayout::Direction QBoxLayout::direction() const

Gibt die Richtung der Box zurück. addWidget() und addSpacing() arbeiten in dieser Richtung; die Dehnung erfolgt in dieser Richtung.

Siehe auch setDirection(), QBoxLayout::Direction, addWidget(), und addSpacing().

[override virtual] Qt::Orientations QBoxLayout::expandingDirections() const

Reimplements: QLayout::expandingDirections() const.

[override virtual] bool QBoxLayout::hasHeightForWidth() const

Reimplements: QLayoutItem::hasHeightForWidth() const.

[override virtual] int QBoxLayout::heightForWidth(int w) const

Reimplements: QLayoutItem::heightForWidth(int) const.

void QBoxLayout::insertItem(int index, QLayoutItem *item)

Fügt item in dieses Box-Layout an der Position index ein. Der Index muss entweder negativ sein oder im Bereich von 0 bis count() liegen, einschließlich. Wenn index negativ ist oder count(), wird das Element am Ende eingefügt.

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 ein, mit dem Streckungsfaktor stretch. Wenn index negativ ist, wird das Layout am Ende hinzugefügt.

layout wird ein untergeordnetes Element des Box-Layouts.

Siehe auch addLayout() und insertItem().

void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)

Fügt spacerItem an der Position index ein, wobei die Mindestgröße und der Streckungsfaktor gleich Null sind. Wenn index negativ ist, wird das Leerzeichen am Ende hinzugefügt.

Siehe auch addSpacerItem(), insertStretch(), und insertSpacing().

void QBoxLayout::insertSpacing(int index, int size)

Fügt ein nicht dehnbares Leerzeichen (ein QSpacerItem) an der Position index ein, mit der Größe size. Wenn index negativ ist, wird das Leerzeichen am Ende eingefügt.

Das Box-Layout hat 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 ein dehnbares Leerzeichen (a QSpacerItem) an der Position index ein, mit der Mindestgröße Null und dem Dehnungsfaktor stretch. Wenn index negativ ist, 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 Streckungsfaktor stretch und der Ausrichtung alignment. Wenn index negativ ist, wird das Widget am Ende eingefügt.

Der Streckungsfaktor gilt nur für die direction der QBoxLayout und ist relativ zu den anderen Boxen und Widgets in dieser QBoxLayout. Widgets und Boxen mit höheren Streckfaktoren wachsen stärker.

Wenn der Dehnungsfaktor 0 ist und nichts anderes in QBoxLayout einen Dehnungsfaktor 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.

Siehe auch addWidget() und insertItem().

[override virtual] void QBoxLayout::invalidate()

Reimplements: QLayout::invalidate().

Setzt zwischengespeicherte Informationen zurück.

[override virtual] QLayoutItem *QBoxLayout::itemAt(int index) const

Reimplements: QLayout::itemAt(int index) const.

[override virtual] QSize QBoxLayout::maximumSize() const

Reimplements: QLayout::maximumSize() const.

[override virtual] int QBoxLayout::minimumHeightForWidth(int w) const

Reimplements: QLayoutItem::minimumHeightForWidth(int w) const.

[override virtual] QSize QBoxLayout::minimumSize() const

Reimplements: QLayout::minimumSize() const.

void QBoxLayout::setDirection(QBoxLayout::Direction direction)

Setzt die Richtung dieses Layouts auf direction.

Siehe auch direction().

[override virtual] void QBoxLayout::setGeometry(const QRect &r)

Reimplements: QLayout::setGeometry(const QRect &r).

[override virtual] void QBoxLayout::setSpacing(int spacing)

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QLayout::spacing.

Reimplements QLayout::setSpacing(). Setzt die Eigenschaft spacing auf spacing.

Siehe auch QLayout::setSpacing() und spacing().

void QBoxLayout::setStretch(int index, int stretch)

Setzt den Streckungsfaktor an der Position index. auf stretch.

Siehe auch stretch().

bool QBoxLayout::setStretchFactor(QWidget *widget, int stretch)

Setzt den Streckungsfaktor 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)

Dies ist eine überladene Funktion.

Setzt den Streckungsfaktor für das Layout layout auf stretch und gibt true zurück, wenn layout in diesem Layout gefunden wird (ohne untergeordnete Layouts); andernfalls gibt sie false zurück.

[override virtual] QSize QBoxLayout::sizeHint() const

Reimplements: QLayoutItem::sizeHint() const.

[override virtual] int QBoxLayout::spacing() const

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QLayout::spacing.

Reimplements QLayout::spacing(). Wenn die Eigenschaft spacing gültig ist, wird dieser Wert zurückgegeben. Andernfalls wird ein Wert für die Eigenschaft spacing berechnet und zurückgegeben. Da der Layoutabstand in einem Widget stilabhängig ist, wird, wenn das übergeordnete Element ein Widget ist, der Stil für den (horizontalen oder vertikalen) Abstand des Layouts abgefragt. Andernfalls ist das übergeordnete Element ein Layout und es wird das übergeordnete Layout für die Abstände abgefragt().

Siehe auch QLayout::spacing() und setSpacing().

int QBoxLayout::stretch(int index) const

Gibt den Streckungsfaktor an der Position index zurück.

Siehe auch setStretch().

[override virtual] QLayoutItem *QBoxLayout::takeAt(int index)

Reimplements: QLayout::takeAt(int index).

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