En esta página

QStackedLayout Class

La clase QStackedLayout proporciona una pila de widgets donde sólo un widget es visible a la vez. Más...

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

Tipos públicos

enum StackingMode { StackOne, StackAll }

Propiedades

Funciones públicas

QStackedLayout()
QStackedLayout(QLayout *parentLayout)
QStackedLayout(QWidget *parent)
virtual ~QStackedLayout()
int addWidget(QWidget *widget)
virtual int count() const override
int currentIndex() const
QWidget *currentWidget() const
int insertWidget(int index, QWidget *widget)
void setStackingMode(QStackedLayout::StackingMode stackingMode)
QStackedLayout::StackingMode stackingMode() const
QWidget *widget(int index) const

Funciones públicas reimplementadas

virtual void addItem(QLayoutItem *item) override
virtual bool hasHeightForWidth() const override
virtual int heightForWidth(int width) const override
virtual QLayoutItem *itemAt(int index) const override
virtual QSize minimumSize() const override
virtual void setGeometry(const QRect &rect) override
virtual QSize sizeHint() const override
virtual QLayoutItem *takeAt(int index) override

Ranuras públicas

void setCurrentIndex(int index)
void setCurrentWidget(QWidget *widget)

Señales

void currentChanged(int index)
(since 6.9) void widgetAdded(int index)
void widgetRemoved(int index)

Descripción Detallada

QStackedLayout se puede utilizar para crear una interfaz de usuario similar a la proporcionada por QTabWidget. También hay una clase de conveniencia QStackedWidget construida sobre QStackedLayout.

Un QStackedLayout puede ser poblado con un número de widgets hijos ("páginas"). Por ejemplo:

QWidget *firstPageWidget = new QWidget;
QWidget *secondPageWidget = new QWidget;
QWidget *thirdPageWidget = new QWidget;

QStackedLayout *stackedLayout = new QStackedLayout;
stackedLayout->addWidget(firstPageWidget);
stackedLayout->addWidget(secondPageWidget);
stackedLayout->addWidget(thirdPageWidget);

QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(stackedLayout);
setLayout(mainLayout);

QStackedLayout no proporciona ningún medio intrínseco para que el usuario cambie de página. Esto se hace típicamente a través de un QComboBox o un QListWidget que almacena los títulos de las páginas del QStackedLayout. Por ejemplo:

QComboBox *pageComboBox = new QComboBox;
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, &QComboBox::activated,
        stackedLayout, &QStackedLayout::setCurrentIndex);

Cuando se rellena un layout, los widgets se añaden a una lista interna. La función indexOf() devuelve el índice de un widget en esa lista. Los widgets pueden añadirse al final de la lista utilizando la función addWidget(), o insertarse en un índice determinado utilizando la función insertWidget(). La función removeWidget() elimina de la presentación el widget situado en el índice dado. El número de widgets que contiene la presentación puede obtenerse mediante la función count().

La función widget() devuelve el widget en una posición de índice dada. El índice del widget que se muestra en pantalla viene dado por currentIndex() y puede cambiarse utilizando setCurrentIndex(). De forma similar, el widget que se muestra actualmente puede recuperarse utilizando la función currentWidget(), y modificarse utilizando la función setCurrentWidget().

Cada vez que cambia el widget actual en la presentación o se elimina un widget de la presentación, se emiten las señales currentChanged() y widgetRemoved() respectivamente.

Véase también QStackedWidget y QTabWidget.

Documentación de tipos de miembros

enum QStackedLayout::StackingMode

Este enum especifica como el layout maneja sus widgets child con respecto a su visibilidad.

ConstanteValorDescripción
QStackedLayout::StackOne0Sólo es visible el widget actual. Este es el valor por defecto.
QStackedLayout::StackAll1Todos los widgets son visibles. El widget actual sólo está visible.

Documentación de la propiedad

[read-only] count : int

Esta propiedad contiene el número de widgets que contiene la presentación

Funciones de acceso:

virtual int count() const override

Véase también currentIndex() y widget().

currentIndex : int

Esta propiedad contiene la posición del índice del widget que es visible

El índice actual es -1 si no hay widget actual.

Funciones de acceso:

int currentIndex() const
void setCurrentIndex(int index)

Señal del notificador:

void currentChanged(int index)

Véase también currentWidget() y indexOf().

stackingMode : StackingMode

determina la forma en que se gestiona la visibilidad de los widgets hijos.

El valor por defecto es StackOne. Establecer la propiedad a StackAll permite hacer uso del diseño para widgets superpuestos que realizan dibujo adicional encima de otros widgets, por ejemplo, editores gráficos.

Funciones de acceso:

QStackedLayout::StackingMode stackingMode() const
void setStackingMode(QStackedLayout::StackingMode stackingMode)

Documentación de funciones miembro

QStackedLayout::QStackedLayout()

Construye un QStackedLayout sin padre.

Este QStackedLayout debe ser instalado en un widget posteriormente para que sea efectivo.

Ver también addWidget() y insertWidget().

[explicit] QStackedLayout::QStackedLayout(QLayout *parentLayout)

Construye un nuevo QStackedLayout y lo inserta en la dirección parentLayout.

[explicit] QStackedLayout::QStackedLayout(QWidget *parent)

Construye un nuevo QStackedLayout con la dirección parent.

Este layout se instalará en el widget parent y gestionará la geometría de sus hijos.

[virtual noexcept] QStackedLayout::~QStackedLayout()

Destruye este QStackedLayout. Tenga en cuenta que los widgets del diseño no se destruyen.

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

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

int QStackedLayout::addWidget(QWidget *widget)

Añade el widget dado al final de este diseño y devuelve la posición del índice del widget.

Si QStackedLayout está vacío antes de llamar a esta función, el widget actual será widget.

Véase también insertWidget(), removeWidget() y setCurrentWidget().

[signal] void QStackedLayout::currentChanged(int index)

Esta señal se emite cada vez que cambia el widget actual de la presentación. El index especifica el índice del nuevo widget actual, o -1 si no hay uno nuevo (por ejemplo, si no hay widgets en el QStackedLayout).

Nota: Señal notificadora para la propiedad currentIndex.

Véase también currentWidget() y setCurrentWidget().

QWidget *QStackedLayout::currentWidget() const

Devuelve el widget actual, o nullptr si no hay widgets en este diseño.

Véase también currentIndex() y setCurrentWidget().

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

Reimplementa: QLayoutItem::hasHeightForWidth() const.

[override virtual] int QStackedLayout::heightForWidth(int width) const

Reimplementa: QLayoutItem::heightForWidth(int) const.

int QStackedLayout::insertWidget(int index, QWidget *widget)

Inserta el widget dado en el index dado en este QStackedLayout. Si index está fuera de rango, se añade el widget (en cuyo caso se devuelve el índice actual de widget ).

Si QStackedLayout está vacío antes de llamar a esta función, widget se convierte en el widget actual.

La inserción de un nuevo widget en un índice menor o igual al índice actual incrementará el índice actual, pero mantendrá el widget actual.

Véase también addWidget(), removeWidget(), y setCurrentWidget().

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

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

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

Reimplementa: QLayout::minimumSize() const.

[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)

Establece que el widget actual sea el especificado en widget. El nuevo widget actual ya debe estar contenido en este diseño apilado.

Véase también setCurrentIndex() y currentWidget().

[override virtual] void QStackedLayout::setGeometry(const QRect &rect)

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

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

Reimplementa: QLayoutItem::sizeHint() const.

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

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

QWidget *QStackedLayout::widget(int index) const

Devuelve el widget en la posición dada index, o nullptr si no hay widget en la posición dada.

Véase también currentWidget() y indexOf().

[signal, since 6.9] void QStackedLayout::widgetAdded(int index)

Esta señal se emite cada vez que se añade o inserta un widget. El widget index se pasa como parámetro.

Esta función se introdujo en Qt 6.9.

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

[signal] void QStackedLayout::widgetRemoved(int index)

Esta señal se emite cada vez que se elimina un widget del diseño. El widget index se pasa como parámetro.

Véase también removeWidget().

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