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