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
- count : int
- currentIndex : int
- stackingMode : StackingMode
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.
| Constante | Valor | Descripción |
|---|---|---|
QStackedLayout::StackOne | 0 | Sólo es visible el widget actual. Este es el valor por defecto. |
QStackedLayout::StackAll | 1 | Todos 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.