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
- count : int
- currentIndex : int
- stackingMode : StackingMode
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.
| Constante | Valeur | Description |
|---|---|---|
QStackedLayout::StackOne | 0 | Seul le widget actuel est visible. Il s'agit de la valeur par défaut. |
QStackedLayout::StackAll | 1 | Tous 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.