![]() |
Qt 6.x
The Qt SDK
|
The QStackedLayout class provides a stack of widgets where only one widget is visible at a time. More...
#include <qstackedlayout.h>
Public Types | |
enum | StackingMode { StackOne , StackAll } |
![]() | |
enum | SizeConstraint { SetDefaultConstraint , SetNoConstraint , SetMinimumSize , SetFixedSize , SetMaximumSize , SetMinAndMaxSize } |
The possible values are: More... | |
Public Slots | |
void | setCurrentIndex (int index) |
void | setCurrentWidget (QWidget *w) |
Sets the current widget to be the specified widget. | |
![]() | |
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 | 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. | |
QWidget * | currentWidget () const |
Returns the current widget, or \nullptr if there are no widgets in this layout. | |
int | currentIndex () const |
QWidget * | widget (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 | |
QLayoutItem * | itemAt (int) const override |
\reimp | |
QLayoutItem * | takeAt (int) override |
\reimp | |
void | setGeometry (const QRect &rect) override |
\reimp | |
bool | hasHeightForWidth () const override |
\reimp | |
int | heightForWidth (int width) const override |
\reimp | |
![]() | |
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) |
SizeConstraint | sizeConstraint () const |
void | setMenuBar (QWidget *w) |
Tells the geometry manager to place the menu bar widget at the top of parentWidget(), outside QWidget::contentsMargins(). | |
QWidget * | menuBar () const |
Returns the menu bar set for this layout, or \nullptr if no menu bar is set. | |
QWidget * | parentWidget () 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. | |
virtual void | addItem (QLayoutItem *)=0 |
Implemented in subclasses to add an item. | |
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 | minimumSize () const override |
Returns the minimum size of this layout. | |
QSize | maximumSize () const override |
Returns the maximum size of this layout. | |
virtual void | setGeometry (const QRect &) override |
\reimp | |
virtual QLayoutItem * | itemAt (int index) const =0 |
Must be implemented in subclasses to return the layout item at index. | |
virtual QLayoutItem * | takeAt (int index)=0 |
Must be implemented in subclasses to remove the layout item at index from the layout, and return the item. | |
virtual int | indexOf (const QWidget *) const |
Searches for widget widget in this layout (not including child layouts). | |
virtual int | indexOf (const QLayoutItem *) const |
virtual int | count () const =0 |
Must be implemented in subclasses to return the number of items in the layout. | |
bool | isEmpty () const override |
\reimp | |
QSizePolicy::ControlTypes | controlTypes () const override |
\reimp | |
virtual QLayoutItem * | replaceWidget (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 |
QLayout * | layout () 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. | |
![]() | |
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< QString > | bindableObjectName () |
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 | 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). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
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::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), 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 (const QString &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 > | |
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 QObjectList & | children () 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< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () 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 . | |
![]() | |
QLayoutItem (Qt::Alignment alignment=Qt::Alignment()) | |
Constructs a layout item with an alignment. | |
virtual | ~QLayoutItem () |
Destroys the QLayoutItem. | |
virtual QSize | sizeHint () const =0 |
Implemented in subclasses to return the preferred size of this item. | |
virtual QSize | minimumSize () const =0 |
Implemented in subclasses to return the minimum size of this item. | |
virtual QSize | maximumSize () const =0 |
Implemented in subclasses to return the maximum size of this item. | |
virtual Qt::Orientations | expandingDirections () const =0 |
Returns whether this layout item can make use of more space than sizeHint(). | |
virtual void | setGeometry (const QRect &)=0 |
Implemented in subclasses to set this item's geometry to r. | |
virtual QRect | geometry () const =0 |
Returns the rectangle covered by this layout item. | |
virtual bool | isEmpty () const =0 |
Implemented in subclasses to return whether this item is empty, i.e. | |
virtual bool | hasHeightForWidth () const |
Returns true if this layout's preferred height depends on its width; otherwise returns false . | |
virtual int | heightForWidth (int) const |
Returns the preferred height for this layout item, given the width, which is not used in this default implementation. | |
virtual int | minimumHeightForWidth (int) const |
Returns the minimum height this widget needs for the given width, w. | |
virtual void | invalidate () |
Invalidates any cached information in this layout item. | |
virtual QWidget * | widget () const |
If this item manages a QWidget, returns that widget. | |
virtual QLayout * | layout () |
If this item is a QLayout, it is returned as a QLayout; otherwise \nullptr is returned. | |
virtual QSpacerItem * | spacerItem () |
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. | |
virtual QSizePolicy::ControlTypes | controlTypes () const |
Returns the control type(s) for the layout item. | |
Properties | |
int | currentIndex |
the index position of the widget that is visible | |
StackingMode | stackingMode |
determines the way visibility of child widgets are handled. | |
![]() | |
int | spacing |
the spacing between widgets inside the layout | |
QMargins | contentsMargins |
SizeConstraint | sizeConstraint |
the resize mode of the layout | |
![]() | |
QString | objectName |
the name of this object | |
Additional Inherited Members | |
![]() | |
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 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) |
![]() | |
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 *) | |
![]() | |
QObject * | sender () 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 | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
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) | |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
Qt::Alignment | align |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
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:
\codeline
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:
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.
Definition at line 15 of file qstackedlayout.h.
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 24 of file qstackedlayout.h.
QStackedLayout::QStackedLayout | ( | ) |
Constructs a QStackedLayout with no parent.
This QStackedLayout must be installed on a widget later on to become effective.
Definition at line 122 of file qstackedlayout.cpp.
|
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 133 of file qstackedlayout.cpp.
|
explicit |
Constructs a new QStackedLayout and inserts it into the given parentLayout.
Definition at line 142 of file qstackedlayout.cpp.
QStackedLayout::~QStackedLayout | ( | ) |
Destroys this QStackedLayout.
Note that the layout's widgets are not destroyed.
Definition at line 151 of file qstackedlayout.cpp.
References d, and qDeleteAll().
|
overridevirtual |
\reimp
Implements QLayout.
Definition at line 388 of file qstackedlayout.cpp.
References addWidget(), item, Q_UNLIKELY, qWarning, and QLayoutItem::widget().
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.
Definition at line 166 of file qstackedlayout.cpp.
References d, insertWidget(), and QLayoutItem::widget().
Referenced by addItem().
|
overridevirtual |
the number of widgets contained in the layout
Implements QLayout.
Definition at line 378 of file qstackedlayout.cpp.
References d.
Referenced by hasHeightForWidth(), and heightForWidth().
|
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)
Referenced by setCurrentIndex(), and takeAt().
int QStackedLayout::currentIndex | ( | ) | const |
Definition at line 320 of file qstackedlayout.cpp.
References d.
QWidget * QStackedLayout::currentWidget | ( | ) | const |
Returns the current widget, or \nullptr if there are no widgets in this layout.
Definition at line 352 of file qstackedlayout.cpp.
References d.
Referenced by setCurrentIndex(), setGeometry(), and setStackingMode().
|
overridevirtual |
\reimp
Reimplemented from QLayoutItem.
Definition at line 458 of file qstackedlayout.cpp.
References count(), i, item, and itemAt().
|
overridevirtual |
\reimp
Reimplemented from QLayoutItem.
Definition at line 474 of file qstackedlayout.cpp.
References count(), i, item, itemAt(), minimumSize(), and qMax().
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.
Definition at line 186 of file qstackedlayout.cpp.
References QLayout::addChildWidget(), QLayoutPrivate::createWidgetItem(), d, QWidget::hide(), QLayout::invalidate(), QWidget::lower(), qMin(), setCurrentIndex(), StackOne, and QLayoutItem::widget().
Referenced by addWidget().
|
overridevirtual |
\reimp
Implements QLayout.
Definition at line 211 of file qstackedlayout.cpp.
References d.
Referenced by hasHeightForWidth(), and heightForWidth().
|
overridevirtual |
\reimp
Reimplemented from QLayout.
Definition at line 423 of file qstackedlayout.cpp.
References d, i, qSmartMinSize(), and QLayoutItem::widget().
Referenced by heightForWidth().
|
slot |
Definition at line 260 of file qstackedlayout.cpp.
References QWidget::clearFocus(), currentChanged(), currentWidget(), d, emit, QWidget::hide(), i, QWidget::isAncestorOf(), next, QObject::parent(), QLayout::parentWidget(), StackOne, Qt::TabFocus, and QLayoutItem::widget().
Referenced by insertWidget(), setCurrentWidget(), and takeAt().
Sets the current widget to be the specified widget.
The new current widget must already be contained in this stacked layout.
Definition at line 335 of file qstackedlayout.cpp.
References QLayout::indexOf(), Q_UNLIKELY, qWarning, setCurrentIndex(), and QLayoutItem::widget().
\reimp
Reimplemented from QLayout.
Definition at line 438 of file qstackedlayout.cpp.
References currentWidget(), d, i, rect, QWidget::setGeometry(), StackAll, StackOne, and QLayoutItem::widget().
void QStackedLayout::setStackingMode | ( | StackingMode | stackingMode | ) |
Definition at line 527 of file qstackedlayout.cpp.
References currentIndex, currentWidget(), d, QLayout::geometry(), QWidget::geometry, i, QRect::isNull(), QWidget::setGeometry(), QWidget::setVisible(), StackAll, stackingMode, StackOne, and QLayoutItem::widget().
|
overridevirtual |
\reimp
Implements QLayoutItem.
Definition at line 402 of file qstackedlayout.cpp.
References d, QSizePolicy::horizontalPolicy(), i, QSizePolicy::Ignored, QWidget::sizeHint, QWidget::sizePolicy, QSizePolicy::verticalPolicy(), and QLayoutItem::widget().
QStackedLayout::StackingMode QStackedLayout::stackingMode | ( | ) | const |
Definition at line 521 of file qstackedlayout.cpp.
References d.
|
overridevirtual |
\reimp
Implements QLayout.
Definition at line 229 of file qstackedlayout.cpp.
References currentChanged(), d, emit, QGraphicsItem::hide(), item, qt_wasDeleted(), setCurrentIndex(), and widgetRemoved().
QWidget * QStackedLayout::widget | ( | int | index | ) | const |
Returns the widget at the given index, or \nullptr if there is no widget at the given position.
Definition at line 364 of file qstackedlayout.cpp.
References d.
|
signal |
This signal is emitted whenever a widget is removed from the layout.
The widget's index is passed as parameter.
Referenced by takeAt().
|
readwrite |
the index position of the widget that is visible
The current index is -1 if there is no current widget.
Definition at line 69 of file qstackedlayout.h.
Referenced by setStackingMode().
|
readwrite |
determines the way visibility of child widgets are handled.
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 69 of file qstackedlayout.h.
Referenced by setStackingMode().