Sur cette page

QStackedLayout Class

La classe `QStackedLayout` permet de créer une pile de widgets dont un seul est visible à la fois. En savoir plus...

En-tête : #include <QStackedLayout>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite de : QLayout

Types publics

enum StackingMode { StackOne, StackAll }

Propriétés

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Slots publics

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

Signaux

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

Description détaillée

QStackedLayout permet de créer une interface utilisateur similaire à celle fournie par QTabWidget. Il existe également une classe d'QStackedWidget, très pratique, qui s'appuie sur QStackedLayout.

Un QStackedLayout peut contenir plusieurs widgets enfants (« pages »). Par exemple :

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 ne fournit aucun moyen intrinsèque permettant à l'utilisateur de changer de page. Cela se fait généralement via un QComboBox ou un QListWidget qui stocke les titres des pages du QStackedLayout. Par exemple :

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

Lors du remplissage d’une mise en page, les widgets sont ajoutés à une liste interne. La fonction indexOf() renvoie l’index d’un widget dans cette liste. Les widgets peuvent soit être ajoutés à la fin de la liste à l’aide de la fonction addWidget(), soit être insérés à un index donné à l’aide de la fonction insertWidget(). La fonction removeWidget() supprime de la mise en page le widget situé à l’index donné. Le nombre de widgets contenus dans la mise en page peut être obtenu à l’aide de la fonction count().

La fonction widget() renvoie le widget situé à un index donné. L'index du widget affiché à l'écran est fourni par la fonction currentIndex() et peut être modifié à l'aide de la fonction setCurrentIndex(). De la même manière, le widget actuellement affiché peut être récupéré à l'aide de la fonction currentWidget() et modifié à l'aide de la fonction setCurrentWidget().

Chaque fois que le widget actif dans la mise en page change ou qu’un widget est supprimé de la mise en page, les signaux currentChanged() et widgetRemoved() sont émis respectivement.

Voir également QStackedWidget et QTabWidget.

Documentation sur les types de membres

enum QStackedLayout::StackingMode

Cette énumération définit la manière dont la mise en page gère la visibilité de ses widgets enfants.

ConstanteValeurDescription
QStackedLayout::StackOne0Seul le widget actuel est visible. Il s'agit de la valeur par défaut.
QStackedLayout::StackAll1Tous les widgets sont visibles. Le widget actuel est simplement mis en avant.

Documentation de la propriété

[read-only] count : int

Cette propriété contient le nombre de widgets présents dans la mise en page

Fonctions d'accès :

virtual int count() const override

Voir également currentIndex() et widget().

currentIndex : int

Cette propriété contient l'index du widget actuellement visible

L'index actuel est égal à -1 s'il n'y a pas de widget actif.

Fonctions d'accès :

int currentIndex() const
void setCurrentIndex(int index)

Signal de notification :

void currentChanged(int index)

Voir également currentWidget() et indexOf().

stackingMode : StackingMode

détermine la manière dont la visibilité des widgets enfants est gérée.

La valeur par défaut est « StackOne ». En définissant cette propriété sur « StackAll », vous pouvez utiliser la disposition pour les widgets de superposition qui effectuent un tracé supplémentaire par-dessus d’autres widgets, par exemple les éditeurs graphiques.

Fonctions d'accès :

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

Documentation des fonctions membres

QStackedLayout::QStackedLayout()

Crée un objet `QStackedLayout` sans parent.

Ce QStackedLayout doit être appliqué à un widget ultérieurement pour être effectif.

Voir aussi addWidget() et insertWidget().

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

Crée un nouvel objet `QStackedLayout` et l'insère dans l'objet ` parentLayout` spécifié.

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

Crée un nouvel objet `QStackedLayout` avec le ` parent` fourni.

Cette mise en page s'installera sur le widget parent et gérera la géométrie de ses éléments enfants.

[virtual noexcept] QStackedLayout::~QStackedLayout()

Détruit cette instance QStackedLayout. Notez que les widgets de la mise en page ne sont pas détruits.

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

Réimplémente : QLayout::addItem(QLayoutItem *item).

int QStackedLayout::addWidget(QWidget *widget)

Ajoute l'widget on indiquée à la fin de cette mise en page et renvoie l'index de l'widget on.

Si la variable ` QStackedLayout ` est vide avant l'appel de cette fonction, l'élément ` widget ` spécifié devient le widget actif.

Voir également insertWidget(), removeWidget() et setCurrentWidget().

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

Ce signal est émis chaque fois que le widget actif dans la mise en page change. La propriété ` index ` indique l'index du nouveau widget actif, ou -1 s'il n'y en a pas de nouveau (par exemple, s'il n'y a aucun widget dans l'QStackedLayout).

Remarque : signalde notification pour la propriété currentIndex.

Voir également currentWidget() et setCurrentWidget().

QWidget *QStackedLayout::currentWidget() const

Renvoie le widget actuel, ou nullptr s’il n’y a aucun widget dans cette mise en page.

Voir également currentIndex() et setCurrentWidget().

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

Réimplémente : QLayoutItem::hasHeightForWidth() const.

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

Réimplémente : QLayoutItem::heightForWidth(int) const.

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

Insère l’ widget donné à l’ index donné dans ce QStackedLayout. Si index est hors limites, le widget est ajouté à la fin (auquel cas c’est l’index réel de l’ widget qui est renvoyé).

Si la variable ` QStackedLayout ` est vide avant l'appel de cette fonction, l'widget fournie devient le widget actuel.

L’insertion d’un nouveau widget à un index inférieur ou égal à l’index actuel incrémentera l’index actuel, mais conservera le widget actuel.

Voir également addWidget(), removeWidget() et setCurrentWidget().

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

Réimplémente : ` QLayout::itemAt(int index) const`.

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

Réimplémente : QLayout::minimumSize() const.

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

Définit le widget actuel comme étant l'widget spécifié. Le nouveau widget actuel doit déjà faire partie de cette disposition empilée.

Voir également setCurrentIndex() et currentWidget().

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

Réimplémente : QLayout::setGeometry(const QRect &r).

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

Réimplémente : QLayoutItem::sizeHint() const.

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

Réimplémente : QLayout::takeAt(int index).

QWidget *QStackedLayout::widget(int index) const

Renvoie le widget situé à l'index indiquée, ou nullptr s'il n'y a pas de widget à la position indiquée.

Voir aussi currentWidget() et indexOf().

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

Ce signal est émis chaque fois qu'un widget est ajouté ou inséré. L'index e du widget est transmise en paramètre.

Cette fonction a été introduite dans Qt 6.9.

Voir également ` addWidget()` et ` insertWidget()`.

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

Ce signal est émis chaque fois qu'un widget est supprimé de la mise en page. L'index du widget est transmise en paramètre.

Voir également 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.