Auf dieser Seite

QStackedLayout Class

Die Klasse „QStackedLayout“ stellt einen Stapel von Widgets bereit, bei dem jeweils nur ein Widget sichtbar ist. Mehr...

Überschrift: #include <QStackedLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QLayout

Öffentliche Typen

enum StackingMode { StackOne, StackAll }

Eigenschaften

Öffentliche Funktionen

QStackedLayout()
QStackedLayout(QLayout *parentLayout)
QStackedLayout(QWidget *parent)
virtual ~QStackedLayout()
int addWidget(QWidget *widget)
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

Neu implementierte öffentliche Funktionen

virtual void addItem(QLayoutItem *item) override
virtual int count() const 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

Öffentliche Slots

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

Signale

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

Ausführliche Beschreibung

Mit `QStackedLayout` lässt sich eine Benutzeroberfläche erstellen, die der von ` QTabWidget` ähnelt. Außerdem gibt es eine auf `QStackedLayout` aufbauende Komfort QStackedWidget -Klasse.

Ein `QStackedLayout` kann mit einer Reihe von untergeordneten Widgets („Seiten“) gefüllt werden. Zum Beispiel:

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 bietet keine integrierte Möglichkeit für den Benutzer, zwischen den Seiten zu wechseln. Dies erfolgt in der Regel über ein „ QComboBox “ oder ein „ QListWidget “, das die Titel der Seiten des QStackedLayout speichert. Beispiel:

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

Beim Befüllen eines Layouts werden die Widgets einer internen Liste hinzugefügt. Die Funktion ` indexOf()` gibt den Index eines Widgets in dieser Liste zurück. Die Widgets können entweder mit der Funktion „ addWidget()“ an das Ende der Liste angehängt oder mit der Funktion „ insertWidget()“ an einer bestimmten Indexposition eingefügt werden. Die Funktion „ removeWidget()“ entfernt das Widget an der angegebenen Indexposition aus dem Layout. Die Anzahl der im Layout enthaltenen Widgets kann mit der Funktion „ count()“ ermittelt werden.

Die Funktion „ widget()“ gibt das Widget an einer bestimmten Indexposition zurück. Der Index des auf dem Bildschirm angezeigten Widgets wird durch „ currentIndex()“ angegeben und kann mit „ setCurrentIndex()“ geändert werden. In ähnlicher Weise kann das aktuell angezeigte Widget mit der Funktion „ currentWidget()“ abgerufen und mit der Funktion „ setCurrentWidget()“ geändert werden.

Immer wenn sich das aktuelle Widget im Layout ändert oder ein Widget aus dem Layout entfernt wird, werden die Signale „ currentChanged()“ bzw. „ widgetRemoved()“ ausgelöst.

Siehe auch „ QStackedWidget “ und „ QTabWidget “.

Dokumentation zu Mitgliedstypen

enum QStackedLayout::StackingMode

Diese Enumeration legt fest, wie das Layout die Sichtbarkeit seiner untergeordneten Widgets handhabt.

KonstanteWertBeschreibung
QStackedLayout::StackOne0Nur das aktuelle Widget ist sichtbar. Dies ist die Standardeinstellung.
QStackedLayout::StackAll1Alle Widgets sind sichtbar. Das aktuelle Widget wird lediglich hervorgehoben.

Dokumentation zur Eigenschaft

[read-only] count : int

Diese Eigenschaft gibt die Anzahl der im Layout enthaltenen Widgets an

Zugriffsfunktionen:

virtual int count() const override

Siehe auch currentIndex() und widget().

currentIndex : int

Diese Eigenschaft enthält die Indexposition des sichtbaren Widgets

Der aktuelle Index ist -1, wenn derzeit kein Widget vorhanden ist.

Zugriffsfunktionen:

int currentIndex() const
void setCurrentIndex(int index)

Notifier-Signal:

void currentChanged(int index)

Siehe auch „ currentWidget()“ und „ indexOf()“.

stackingMode : StackingMode

Legt fest, wie die Sichtbarkeit von untergeordneten Widgets gehandhabt wird.

Der Standardwert ist „ StackOne “. Wenn Sie die Eigenschaft auf „ StackAll “ setzen, können Sie das Layout für Overlay-Widgets nutzen, die zusätzliche Zeichnungen über anderen Widgets anzeigen, beispielsweise grafische Editoren.

Zugriffsfunktionen:

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

Dokumentation zu Mitgliedsfunktionen

QStackedLayout::QStackedLayout()

Erstellt ein QStackedLayout ohne übergeordnetes Element.

Dieses `QStackedLayout` muss später auf einem Widget angebracht werden, damit es wirksam wird.

Siehe auch „ addWidget()“ und „ insertWidget()“.

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

Erstellt ein neues `QStackedLayout` und fügt es in das angegebene ` parentLayout` ein.

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

Erstellt ein neues `QStackedLayout` mit dem angegebenen ` parent`.

Dieses Layout wird auf dem parent -Widget installiert und verwaltet die Geometrie seiner untergeordneten Elemente.

[virtual noexcept] QStackedLayout::~QStackedLayout()

Löscht dieses QStackedLayout. Beachten Sie, dass die Widgets des Layouts nicht gelöscht werden.

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

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

int QStackedLayout::addWidget(QWidget *widget)

Fügt das angegebene „ widget “ am Ende dieses Layouts ein und gibt die Indexposition des „ widget “ zurück.

Ist der ` QStackedLayout ` vor dem Aufruf dieser Funktion leer, wird das angegebene ` widget ` zum aktuellen Widget.

Siehe auch „ insertWidget()“, „ removeWidget()“ und „ setCurrentWidget()“.

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

Dieses Signal wird immer dann ausgelöst, wenn sich das aktuell angezeigte Widget im Layout ändert. Die Eigenschaft „ index “ gibt den Index des neuen aktuellen Widgets an oder den Wert -1, wenn kein neues Widget vorhanden ist (beispielsweise, wenn sich keine Widgets im „ QStackedLayout “ befinden).

Hinweis: Notifier -Signal für die Eigenschaft ` currentIndex`.

Siehe auch ` currentWidget()` und ` setCurrentWidget()`.

QWidget *QStackedLayout::currentWidget() const

Gibt das aktuelle Widget zurück oder „ nullptr “, wenn dieses Layout keine Widgets enthält.

Siehe auch „ currentIndex()“ und „ setCurrentWidget()“.

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

Implementiert erneut: ` QLayoutItem::hasHeightForWidth()` const.

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

Implementiert erneut: ` QLayoutItem::heightForWidth(int) const`.

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

Fügt das angegebene ` widget ` an der angegebenen Position ` index ` in diesem ` QStackedLayout` ein. Liegt ` index ` außerhalb des zulässigen Bereichs, wird das Widget angehängt (in diesem Fall wird der tatsächliche Index des ` widget ` zurückgegeben).

Ist die ` QStackedLayout ` vor dem Aufruf dieser Funktion leer, wird das angegebene ` widget ` zum aktuellen Widget.

Wird ein neues Widget an einem Index eingefügt, der kleiner oder gleich dem aktuellen Index ist, wird der aktuelle Index erhöht, das aktuelle Widget bleibt jedoch erhalten.

Siehe auch addWidget(), removeWidget() und setCurrentWidget().

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

Implementiert: ` QLayout::itemAt(int index) const`.

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

Implementiert: ` QLayout::minimumSize()` const.

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

Legt das angegebene Widget „ widget “ als aktuelles Widget fest. Das neue aktuelle Widget muss bereits in diesem gestapelten Layout enthalten sein.

Siehe auch ` setCurrentIndex()` und ` currentWidget()`.

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

Implementiert: ` QLayout::setGeometry(const QRect &r)`.

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

Implementiert erneut: ` QLayoutItem::sizeHint()` const.

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

Implementiert: QLayout::takeAt(int index).

QWidget *QStackedLayout::widget(int index) const

Gibt das Widget an der angegebenen Position index zurück oder nullptr, falls an der angegebenen Position kein Widget vorhanden ist.

Siehe auch currentWidget() und indexOf().

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

Dieses Signal wird immer dann ausgelöst, wenn ein Widget hinzugefügt oder eingefügt wird. Als Parameter wird die „ index “ des Widgets übergeben.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch ` addWidget()` und ` insertWidget()`.

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

Dieses Signal wird ausgelöst, sobald ein Widget aus dem Layout entfernt wird. Die ` index ` des Widgets wird als Parameter übergeben.

Siehe auch ` 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.