En esta página

QBoxLayout Class

La clase QBoxLayout alinea los widgets hijos horizontal o verticalmente. Más...

Cabecera: #include <QBoxLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QLayout
Heredado por:

QHBoxLayout y QVBoxLayout

Tipos Públicos

enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop }

Funciones públicas

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

Funciones públicas reimplementadas

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

Descripción Detallada

QBoxLayout toma el espacio que obtiene (de su layout padre o de parentWidget()), lo divide en una fila de cajas, y hace que cada widget gestionado llene una caja.

Cinco botones en disposición horizontal

Si la orientación del QBoxLayout es Qt::Horizontal las cajas se colocan en fila, con tamaños adecuados. Cada widget (u otra caja) tendrá al menos su tamaño mínimo y como máximo su tamaño máximo. El espacio sobrante se reparte en función de los factores de estiramiento (más información a continuación).

Cinco botones en disposición vertical

Si la orientación del QBoxLayout es Qt::Vertical, las cajas se colocan en una columna, de nuevo con tamaños adecuados.

La forma más sencilla de crear un QBoxLayout es utilizar una de las clases de conveniencia, por ejemplo QHBoxLayout (para cajas Qt::Horizontal ) o QVBoxLayout (para cajas Qt::Vertical ). También puedes utilizar directamente el constructor QBoxLayout, especificando su dirección como LeftToRight, RightToLeft, TopToBottom, o BottomToTop.

Si el QBoxLayout no es el layout de nivel superior (es decir, no está gestionando todas las áreas e hijos del widget), debes añadirlo a su layout padre antes de poder hacer nada con él. La forma normal de añadir un diseño es llamando a parentLayout->addLayout().

Una vez hecho esto, puedes añadir cajas al QBoxLayout usando una de estas cuatro funciones:

  • addWidget() para añadir un widget al QBoxLayout y establecer el factor de estiramiento del widget. (El factor de estiramiento es a lo largo de la fila de cajas).
  • addSpacing() para crear una caja vacía; esta es una de las funciones que se usan para crear diálogos bonitos y espaciosos. Vea más abajo las formas de establecer márgenes.
  • addStretch() para crear una caja vacía estirable.
  • addLayout() para añadir una caja que contenga otro QLayout a la fila y establecer el factor de estiramiento de ese diseño.

Utilice insertWidget(), insertSpacing(), insertStretch() o insertLayout() para insertar una caja en una posición específica del diseño.

QBoxLayout también incluye dos anchos de margen:

  • setContentsMargins() establece la anchura del borde exterior a cada lado del widget. Esta es la anchura del espacio reservado a lo largo de cada uno de los cuatro lados del QBoxLayout.
  • setSpacing() establece el ancho entre cajas vecinas. (Puedes utilizar addSpacing() para obtener más espacio en un punto concreto).

El margen por defecto es proporcionado por el estilo. El margen por defecto que la mayoría de los estilos Qt especifican es 9 para los widgets hijos y 11 para las ventanas. El espaciado por defecto es el mismo que el ancho del margen para un diseño de nivel superior, o el mismo que el diseño padre.

Para eliminar un widget de una presentación, llame a removeWidget(). Llamar a QWidget::hide() en un widget también elimina el widget de la maquetación hasta que se llame a QWidget::show().

Casi siempre querrás usar QVBoxLayout y QHBoxLayout en lugar de QBoxLayout debido a sus convenientes constructores.

Ver también QGridLayout, QStackedLayout, y Layout Management.

Documentación de tipos de miembros

enum QBoxLayout::Direction

Este tipo se utiliza para determinar la dirección de la disposición de una caja.

ConstanteValorDescripción
QBoxLayout::LeftToRight0Horizontal de izquierda a derecha.
QBoxLayout::RightToLeft1Horizontal de derecha a izquierda.
QBoxLayout::TopToBottom2Vertical de arriba a abajo.
QBoxLayout::BottomToTop3Vertical de abajo a arriba.

Documentación de las funciones

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

Construye un nuevo QBoxLayout con la dirección dir y el widget padre parent.

El diseño se establece directamente como el diseño de nivel superior para parent. Sólo puede haber un diseño de nivel superior para un widget. Es devuelto por QWidget::layout().

Véase también direction() y QWidget::setLayout().

[virtual noexcept] QBoxLayout::~QBoxLayout()

Destruye este diseño de caja.

Los widgets del diseño no se destruyen.

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

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

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

Añade layout al final de la caja, con el factor de estiramiento de serie stretch.

layout se convierte en un hijo del diseño de la caja.

Véase también insertLayout(), addItem() y addWidget().

void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)

Añade spacerItem al final de este diseño de caja.

La propiedad de spacerItem se pasa a este diseño.

Véase también addSpacing() y addStretch().

void QBoxLayout::addSpacing(int size)

Añade un espacio no extensible (un QSpacerItem) con el tamaño size al final de este diseño de caja. QBoxLayout proporciona margen y espaciado por defecto. Esta función añade espacio adicional.

Véase también insertSpacing(), addItem(), y QSpacerItem.

void QBoxLayout::addStretch(int stretch = 0)

Añade un espacio estirable (a QSpacerItem) con tamaño mínimo cero y factor de estiramiento stretch al final de este diseño de caja.

Véase también insertStretch(), addItem(), y QSpacerItem.

void QBoxLayout::addStrut(int size)

Limita la dimensión perpendicular de la caja (por ejemplo, la altura si la caja es LeftToRight) a un mínimo de size. Otras restricciones pueden aumentar el límite.

Véase también addItem().

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

Añade widget al final de este diseño de caja, con un factor de estiramiento de stretch y alineación alignment.

El factor de estiramiento se aplica sólo en el direction del QBoxLayout, y es relativo a las otras cajas y widgets en este QBoxLayout. Los widgets y cajas con factores de estiramiento más altos crecen más.

Si el factor de estiramiento es 0 y nada más en el QBoxLayout tiene un factor de estiramiento mayor que cero, el espacio se distribuye según el QWidget::sizePolicy() de cada widget que esté involucrado.

La alineación se especifica en alignment. La alineación por defecto es 0, lo que significa que el widget llena toda la celda.

widget se convierte en hijo de QLayout::parentWidget().

Véase también insertWidget(), addItem(), addLayout(), addStretch(), addSpacing() y addStrut().

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

Reimplementa: QLayout::count() const.

QBoxLayout::Direction QBoxLayout::direction() const

Devuelve la dirección de la caja. addWidget() y addSpacing() trabajan en esta dirección; el estiramiento se extiende en esta dirección.

Véase también setDirection(), QBoxLayout::Direction, addWidget(), y addSpacing().

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

Reimplementa: QLayout::expandingDirections() const.

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

Reimplementa: QLayoutItem::hasHeightForWidth() const.

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

Reimplementa: QLayoutItem::heightForWidth(int) const.

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

Inserta item en este diseño de caja en la posición index. El índice debe ser negativo o estar comprendido entre 0 y count(), ambos inclusive. Si index es negativo o count(), el elemento se añade al final.

La propiedad de item se pasa a esta disposición.

Véase también addItem(), insertWidget(), insertLayout(), insertStretch() y insertSpacing().

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

Inserta layout en la posición index, con el factor de estiramiento stretch. Si index es negativo, el diseño se añade al final.

layout se convierte en hijo de la caja de diseño.

Véase también addLayout() y insertItem().

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

Inserta spacerItem en la posición index, con tamaño mínimo cero y factor de estiramiento. Si index es negativo, el espacio se añade al final.

La propiedad de spacerItem se pasa a este diseño.

Véase también addSpacerItem(), insertStretch(), y insertSpacing().

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

Inserta un espacio no extensible (a QSpacerItem) en la posición index, con tamaño size. Si index es negativo, el espacio se añade al final.

El diseño de la caja tiene margen y espacio por defecto. Esta función añade espacio adicional.

Véase también addSpacing(), insertItem(), y QSpacerItem.

void QBoxLayout::insertStretch(int index, int stretch = 0)

Inserta un espacio estirable (a QSpacerItem) en la posición index, con tamaño mínimo cero y factor de estiramiento stretch. Si index es negativo, el espacio se añade al final.

Véase también addStretch(), insertItem(), y QSpacerItem.

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

Inserta widget en la posición index, con factor de estiramiento stretch y alineación alignment. Si index es negativo, el widget se añade al final.

El factor de estiramiento se aplica sólo en el direction del QBoxLayout, y es relativo a las otras cajas y widgets en este QBoxLayout. Los widgets y cajas con factores de estiramiento más altos crecen más.

Si el factor de estiramiento es 0 y nada más en el QBoxLayout tiene un factor de estiramiento mayor que cero, el espacio se distribuye según el QWidget::sizePolicy() de cada widget que esté involucrado.

La alineación se especifica en alignment. La alineación por defecto es 0, lo que significa que el widget llena toda la celda.

widget se convierte en hijo de QLayout::parentWidget().

Véase también addWidget() y insertItem().

[override virtual] void QBoxLayout::invalidate()

Reimplementa: QLayout::invalidate().

Restablece la información almacenada en caché.

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

Reimplementa: QLayout::itemAt(int índice) const.

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

Reimplementa: QLayout::maximumSize() const.

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

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

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

Reimplementa: QLayout::minimumSize() const.

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

Establece la dirección de este diseño en direction.

Véase también direction().

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

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

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

Reimplementa una función de acceso a la propiedad: QLayout::spacing.

Reimplementa QLayout::setSpacing(). Establece la propiedad spacing en spacing.

Véase también QLayout::setSpacing() y spacing().

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

Establece el factor de estiramiento en la posición index. a stretch.

Véase también stretch().

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

Establece el factor de estiramiento para widget en stretch y devuelve true si widget se encuentra en este diseño (sin incluir diseños hijos); en caso contrario devuelve false.

Véase también setAlignment().

bool QBoxLayout::setStretchFactor(QLayout *layout, int stretch)

Establece el factor de estiramiento para el diseño layout en stretch y devuelve true si layout se encuentra en este diseño (sin incluir diseños hijos); en caso contrario devuelve false.

Se trata de una función sobrecargada.

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

Reimplementa: QLayoutItem::sizeHint() const.

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

Reimplementa una función de acceso a la propiedad: QLayout::spacing.

Reimplementa QLayout::spacing(). Si la propiedad espaciado es válida, se devuelve ese valor. En caso contrario, se calcula y devuelve un valor para la propiedad spacing. Dado que el espaciado del diseño en un widget depende del estilo, si el padre es un widget, consulta el estilo para el espaciado (horizontal o vertical) del diseño. En caso contrario, el padre es un diseño, y consulta el diseño padre para el espaciado().

Véase también QLayout::spacing() y setSpacing().

int QBoxLayout::stretch(int index) const

Devuelve el factor de estiramiento en la posición index.

Véase también setStretch().

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

Reimplementa: QLayout::takeAt(int índice).

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