Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QStackedLayout Class Reference

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

#include <qstackedlayout.h>

Inheritance diagram for QStackedLayout:
Collaboration diagram for QStackedLayout:

Public Types

enum  StackingMode { StackOne , StackAll }
Public Types inherited from QLayout
enum  SizeConstraint {
  SetDefaultConstraint , SetNoConstraint , SetMinimumSize , SetFixedSize ,
  SetMaximumSize , SetMinAndMaxSize
}
 Describes how the layout constrains the size of the widget. More...

Public Slots

void setCurrentIndex (int index)
void setCurrentWidget (QWidget *w)
 Sets the current widget to be the specified widget.
Public Slots inherited from QObject
void deleteLater ()
 \threadsafe

Signals

void widgetRemoved (int index)
 This signal is emitted whenever a widget is removed from the layout.
void currentChanged (int index)
 This signal is emitted whenever the current widget in the layout changes.
void widgetAdded (int index)
Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.

Public Member Functions

 QStackedLayout ()
 Constructs a QStackedLayout with no parent.
 QStackedLayout (QWidget *parent)
 Constructs a new QStackedLayout with the given parent.
 QStackedLayout (QLayout *parentLayout)
 Constructs a new QStackedLayout and inserts it into the given parentLayout.
 ~QStackedLayout ()
 Destroys this QStackedLayout.
int addWidget (QWidget *w)
 Adds the given widget to the end of this layout and returns the index position of the widget.
int insertWidget (int index, QWidget *w)
 Inserts the given widget at the given index in this QStackedLayout.
QWidgetcurrentWidget () const
 Returns the current widget, or \nullptr if there are no widgets in this layout.
int currentIndex () const
QWidgetwidget (int) const
 Returns the widget at the given index, or \nullptr if there is no widget at the given position.
int count () const override
 the number of widgets contained in the layout
StackingMode stackingMode () const
void setStackingMode (StackingMode stackingMode)
void addItem (QLayoutItem *item) override
 \reimp
QSize sizeHint () const override
 \reimp
QSize minimumSize () const override
 \reimp
QLayoutItemitemAt (int) const override
 \reimp
QLayoutItemtakeAt (int) override
 \reimp
void setGeometry (const QRect &rect) override
 \reimp
bool hasHeightForWidth () const override
 \reimp
int heightForWidth (int width) const override
 \reimp
Public Member Functions inherited from QLayout
 QLayout (QWidget *parent=nullptr)
 Constructs a new top-level QLayout, with parent parent.
 ~QLayout ()
virtual int spacing () const
virtual void setSpacing (int)
void setContentsMargins (int left, int top, int right, int bottom)
void setContentsMargins (const QMargins &margins)
void unsetContentsMargins ()
void getContentsMargins (int *left, int *top, int *right, int *bottom) const
QMargins contentsMargins () const
QRect contentsRect () const
bool setAlignment (QWidget *w, Qt::Alignment alignment)
 Sets the alignment for widget w to alignment and returns true if w is found in this layout (not including child layouts); otherwise returns false.
bool setAlignment (QLayout *l, Qt::Alignment alignment)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Sets the alignment for the layout l to alignment and returns true if l is found in this layout (not including child layouts); otherwise returns false.
void setSizeConstraint (SizeConstraint constraint)
SizeConstraint sizeConstraint () const
void setSizeConstraints (SizeConstraint horizontal, SizeConstraint vertical)
void setHorizontalSizeConstraint (SizeConstraint constraint)
SizeConstraint horizontalSizeConstraint () const
void setVerticalSizeConstraint (SizeConstraint constraint)
SizeConstraint verticalSizeConstraint () const
void setMenuBar (QWidget *w)
 Tells the geometry manager to place the menu bar widget at the top of parentWidget(), outside QWidget::contentsMargins().
QWidgetmenuBar () const
 Returns the menu bar set for this layout, or \nullptr if no menu bar is set.
QWidgetparentWidget () const
 Returns the parent widget of this layout, or \nullptr if this layout is not installed on any widget.
void invalidate () override
 \reimp
QRect geometry () const override
 \reimp
bool activate ()
 Redoes the layout for parentWidget() if necessary.
void update ()
 Updates the layout for parentWidget().
void addWidget (QWidget *w)
 Adds widget w to this layout in a manner specific to the layout.
void removeWidget (QWidget *w)
 Removes the widget widget from the layout.
void removeItem (QLayoutItem *)
 Removes the layout item item from the layout.
Qt::Orientations expandingDirections () const override
 Returns whether this layout can make use of more space than sizeHint().
QSize maximumSize () const override
 Returns the maximum size of this layout.
virtual int indexOf (const QWidget *) const
 Searches for widget widget in this layout (not including child layouts).
virtual int indexOf (const QLayoutItem *) const
bool isEmpty () const override
 \reimp
QSizePolicy::ControlTypes controlTypes () const override
 \reimp
virtual QLayoutItemreplaceWidget (QWidget *from, QWidget *to, Qt::FindChildOptions options=Qt::FindChildrenRecursively)
int totalMinimumHeightForWidth (int w) const
int totalHeightForWidth (int w) const
QSize totalMinimumSize () const
QSize totalMaximumSize () const
QSize totalSizeHint () const
QLayoutlayout () override
 \reimp
void setEnabled (bool)
 Enables this layout if enable is true, otherwise disables it.
bool isEnabled () const
 Returns true if the layout is enabled; otherwise returns false.
void setAlignment (Qt::Alignment a)
 Sets the alignment of this item to alignment.
Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
QString objectName () const
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
QBindable< QStringbindableObjectName ()
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
bool isQmlObjectType () const
 Returns whether the object has been created by the QML engine or ownership has been explicitly set via QJSEngine::setObjectOwnership().
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
QThreadthread () const
 Returns the thread in which the object lives.
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
void killTimer (int id)
 Kills the timer with timer identifier, id.
void killTimer (Qt::TimerId id)
template<typename T>
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
template<typename T>
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
template<typename T>
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<typename T>
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
const QObjectListchildren () const
 Returns a list of child objects.
void setParent (QObject *parent)
 Makes the object a child of parent.
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
bool disconnect (const QObject *receiver, const char *member=nullptr) const
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
bool setProperty (const char *name, QVariant &&value)
QVariant property (const char *name) const
 Returns the value of the object's name property.
QList< QByteArraydynamicPropertyNames () const
QBindingStoragebindingStorage ()
const QBindingStoragebindingStorage () const
QObjectparent () const
 Returns a pointer to the parent object.
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
Public Member Functions inherited from QLayoutItem
 QLayoutItem (Qt::Alignment alignment=Qt::Alignment())
 Constructs a layout item with an alignment.
virtual ~QLayoutItem ()
 Destroys the QLayoutItem.
virtual int minimumHeightForWidth (int) const
 Returns the minimum height this widget needs for the given width, w.
virtual QWidgetwidget () const
 If this item manages a QWidget, returns that widget.
virtual QSpacerItemspacerItem ()
 If this item is a QSpacerItem, it is returned as a QSpacerItem; otherwise \nullptr is returned.
Qt::Alignment alignment () const
 Returns the alignment of this item.
void setAlignment (Qt::Alignment a)
 Sets the alignment of this item to alignment.

Properties

int currentIndex
 the index position of the widget that is visible
StackingMode stackingMode
 determines the way visibility of child widgets are handled.
Properties inherited from QLayout
int spacing
 the spacing between widgets inside the layout
QMargins contentsMargins
SizeConstraint sizeConstraint
 the resize mode of the layout.
SizeConstraint horizontalSizeConstraint
 The horizontal size constraint.
SizeConstraint verticalSizeConstraint
 The vertical size constraint.
Properties inherited from QObject
QString objectName
 the name of this object

Additional Inherited Members

Static Public Member Functions inherited from QLayout
static QSize closestAcceptableSize (const QWidget *w, const QSize &s)
 Returns a size that satisfies all size constraints on widget, including heightForWidth() and that is as close as possible to size.
Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
template<typename Func1, typename Func2>
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
template<typename Func1, typename Func2>
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
template<typename Func1, typename Func2>
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
template<typename Func1>
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
Protected Member Functions inherited from QLayout
void widgetEvent (QEvent *)
void childEvent (QChildEvent *e) override
 \reimp
void addChildLayout (QLayout *l)
 This function is called from addLayout() or insertLayout() functions in subclasses to add layout childLayout as a sub-layout.
void addChildWidget (QWidget *w)
 This function is called from addWidget() functions in subclasses to add w as a managed widget of a layout.
bool adoptLayout (QLayout *layout)
QRect alignmentRect (const QRect &) const
 Returns the rectangle that should be covered when the geometry of this layout is set to r, provided that this layout supports setAlignment().
 QLayout (QLayoutPrivate &d, QLayout *, QWidget *)
Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
int senderSignalIndex () const
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
bool isSignalConnected (const QMetaMethod &signal) const
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
virtual void connectNotify (const QMetaMethod &signal)
virtual void disconnectNotify (const QMetaMethod &signal)
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
Protected Attributes inherited from QLayoutItem
Qt::Alignment align

Detailed Description

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

\inmodule QtWidgets

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

A QStackedLayout can be populated with a number of child widgets ("pages"). For example:

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);

\codeline

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

QStackedLayout 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 QStackedLayout'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, &QComboBox::activated,

When populating a layout, 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 the widget at the given index from the layout. The number of widgets contained in the layout, 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 layout changes or a widget is removed from the layout, the currentChanged() and widgetRemoved() signals are emitted respectively.

See also
QStackedWidget, QTabWidget

Definition at line 16 of file qstackedlayout.h.

Member Enumeration Documentation

◆ StackingMode

Since
4.4

This enum specifies how the layout handles its child widgets regarding their visibility.

\value StackOne Only the current widget is visible. This is the default.

\value StackAll All widgets are visible. The current widget is merely raised.

Enumerator
StackOne 
StackAll 

Definition at line 25 of file qstackedlayout.h.

Constructor & Destructor Documentation

◆ QStackedLayout() [1/3]

QStackedLayout::QStackedLayout ( )

Constructs a QStackedLayout with no parent.

This QStackedLayout must be installed on a widget later on to become effective.

See also
addWidget(), insertWidget()

Definition at line 136 of file qstackedlayout.cpp.

◆ QStackedLayout() [2/3]

QStackedLayout::QStackedLayout ( QWidget * parent)
explicit

Constructs a new QStackedLayout with the given parent.

This layout will install itself on the parent widget and manage the geometry of its children.

Definition at line 147 of file qstackedlayout.cpp.

◆ QStackedLayout() [3/3]

QStackedLayout::QStackedLayout ( QLayout * parentLayout)
explicit

Constructs a new QStackedLayout and inserts it into the given parentLayout.

Definition at line 156 of file qstackedlayout.cpp.

◆ ~QStackedLayout()

QStackedLayout::~QStackedLayout ( )

Destroys this QStackedLayout.

Note that the layout's widgets are not destroyed.

Definition at line 165 of file qstackedlayout.cpp.

Member Function Documentation

◆ addItem()

void QStackedLayout::addItem ( QLayoutItem * item)
overridevirtual

\reimp

Implements QLayout.

Definition at line 403 of file qstackedlayout.cpp.

◆ addWidget()

int QStackedLayout::addWidget ( QWidget * widget)

Adds the given widget to the end of this layout and returns the index position of the widget.

If the QStackedLayout is empty before this function is called, the given widget becomes the current widget.

See also
insertWidget(), removeWidget(), setCurrentWidget()

Definition at line 180 of file qstackedlayout.cpp.

◆ count()

int QStackedLayout::count ( ) const
overridevirtual

the number of widgets contained in the layout

See also
currentIndex(), widget()

Implements QLayout.

Definition at line 393 of file qstackedlayout.cpp.

◆ currentChanged

void QStackedLayout::currentChanged ( int index)
signal

This signal is emitted whenever the current widget in the layout changes.

The index specifies the index of the new current widget, or -1 if there isn't a new one (for example, if there are no widgets in the QStackedLayout)

See also
currentWidget(), setCurrentWidget()

◆ currentIndex()

int QStackedLayout::currentIndex ( ) const

Definition at line 335 of file qstackedlayout.cpp.

◆ currentWidget()

QWidget * QStackedLayout::currentWidget ( ) const

Returns the current widget, or \nullptr if there are no widgets in this layout.

See also
currentIndex(), setCurrentWidget()

Definition at line 367 of file qstackedlayout.cpp.

◆ hasHeightForWidth()

bool QStackedLayout::hasHeightForWidth ( ) const
overridevirtual

\reimp

Reimplemented from QLayoutItem.

Definition at line 473 of file qstackedlayout.cpp.

◆ heightForWidth()

int QStackedLayout::heightForWidth ( int width) const
overridevirtual

\reimp

Reimplemented from QLayoutItem.

Definition at line 489 of file qstackedlayout.cpp.

◆ insertWidget()

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

Inserts the given widget at the given index in this QStackedLayout.

If index is out of range, the widget is appended (in which case it is the actual index of the widget that is returned).

If the QStackedLayout is empty before this function is called, the given widget becomes the current widget.

Inserting a new widget at an index less than or equal to the current index will increment the current index, but keep the current widget.

See also
addWidget(), removeWidget(), setCurrentWidget()

Definition at line 200 of file qstackedlayout.cpp.

◆ itemAt()

QLayoutItem * QStackedLayout::itemAt ( int index) const
overridevirtual

\reimp

Implements QLayout.

Definition at line 226 of file qstackedlayout.cpp.

◆ minimumSize()

QSize QStackedLayout::minimumSize ( ) const
overridevirtual

\reimp

Reimplemented from QLayout.

Definition at line 438 of file qstackedlayout.cpp.

◆ setCurrentIndex

void QStackedLayout::setCurrentIndex ( int index)
slot

Definition at line 275 of file qstackedlayout.cpp.

◆ setCurrentWidget

void QStackedLayout::setCurrentWidget ( QWidget * widget)
slot

Sets the current widget to be the specified widget.

The new current widget must already be contained in this stacked layout.

See also
setCurrentIndex(), currentWidget()

Definition at line 350 of file qstackedlayout.cpp.

◆ setGeometry()

void QStackedLayout::setGeometry ( const QRect & rect)
overridevirtual

\reimp

Reimplemented from QLayout.

Definition at line 453 of file qstackedlayout.cpp.

◆ setStackingMode()

void QStackedLayout::setStackingMode ( StackingMode stackingMode)

Definition at line 542 of file qstackedlayout.cpp.

◆ sizeHint()

QSize QStackedLayout::sizeHint ( ) const
overridevirtual

\reimp

Implements QLayoutItem.

Definition at line 417 of file qstackedlayout.cpp.

◆ stackingMode()

QStackedLayout::StackingMode QStackedLayout::stackingMode ( ) const

Definition at line 536 of file qstackedlayout.cpp.

◆ takeAt()

QLayoutItem * QStackedLayout::takeAt ( int index)
overridevirtual

\reimp

Implements QLayout.

Definition at line 244 of file qstackedlayout.cpp.

◆ widget()

QWidget * QStackedLayout::widget ( int index) const

Returns the widget at the given index, or \nullptr if there is no widget at the given position.

See also
currentWidget(), indexOf()

Definition at line 379 of file qstackedlayout.cpp.

◆ widgetAdded

void QStackedLayout::widgetAdded ( int index)
signal
Since
6.9

This signal is emitted whenever a widget is added or inserted. The widget's index is passed as parameter.

See also
addWidget(), insertWidget()

◆ widgetRemoved

void QStackedLayout::widgetRemoved ( int index)
signal

This signal is emitted whenever a widget is removed from the layout.

The widget's index is passed as parameter.

See also
removeWidget()

Property Documentation

◆ currentIndex

int QStackedLayout::currentIndex
readwrite

the index position of the widget that is visible

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

See also
currentWidget(), indexOf()

Definition at line 20 of file qstackedlayout.h.

◆ stackingMode

StackingMode QStackedLayout::stackingMode
readwrite

determines the way visibility of child widgets are handled.

Since
4.4

The default value is StackOne. Setting the property to StackAll allows you to make use of the layout for overlay widgets that do additional drawing on top of other widgets, for example, graphical editors.

Definition at line 21 of file qstackedlayout.h.


The documentation for this class was generated from the following files: