QStackedWidget Class

The QStackedWidget class provides a stack of widgets where only one widget is visible at a time. More...

Header: #include <QStackedWidget>
qmake: QT += widgets
Inherits: QFrame

Properties

Public Functions

int count() const
int currentIndex() const

Public Slots

void setCurrentIndex(int index)

Signals

void currentChanged(int)

Detailed Description

QStackedWidget can be used to create a user interface similar to the one provided by QTabWidget. It is a convenience layout widget built on top of the QStackedLayout class.

Like QStackedLayout, QStackedWidget can be constructed and populated with a number of child widgets ("pages"):

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

     QStackedWidget *stackedWidget = new QStackedWidget;
     stackedWidget->addWidget(firstPageWidget);
     stackedWidget->addWidget(secondPageWidget);
     stackedWidget->addWidget(thirdPageWidget);

     QVBoxLayout *layout = new QVBoxLayout;
     layout->addWidget(stackedWidget);
     setLayout(layout);

QStackedWidget provides no intrinsic means for the user to switch page. This is typically done through a QComboBox or a QListWidget that stores the titles of the QStackedWidget's pages. For example:

     QComboBox *pageComboBox = new QComboBox;
     pageComboBox->addItem(tr("Page 1"));
     pageComboBox->addItem(tr("Page 2"));
     pageComboBox->addItem(tr("Page 3"));
     connect(pageComboBox, QOverload<int>::of(&QComboBox::activated),
             stackedWidget, &QStackedWidget::setCurrentIndex);

When populating a stacked widget, the widgets are added to an internal list. The indexOf() function returns the index of a widget in that list. The widgets can either be added to the end of the list using the addWidget() function, or inserted at a given index using the insertWidget() function. The removeWidget() function removes a widget from the stacked widget. The number of widgets contained in the stacked widget can be obtained using the count() function.

The widget() function returns the widget at a given index position. The index of the widget that is shown on screen is given by currentIndex() and can be changed using setCurrentIndex(). In a similar manner, the currently shown widget can be retrieved using the currentWidget() function, and altered using the setCurrentWidget() function.

Whenever the current widget in the stacked widget changes or a widget is removed from the stacked widget, the currentChanged() and widgetRemoved() signals are emitted respectively.

See also QStackedLayout and QTabWidget.

Property Documentation

count : const int

This property holds the number of widgets contained by this stacked widget

By default, this property contains a value of 0.

Access functions:

int count() const

See also currentIndex() and widget().

currentIndex : int

This property holds the index position of the widget that is visible

The current index is -1 if there is no current widget.

By default, this property contains a value of -1 because the stack is initially empty.

Access functions:

int currentIndex() const
void setCurrentIndex(int index)

Notifier signal:

void currentChanged(int)

See also currentWidget() and indexOf().