QBoxLayout Class
La classe QBoxLayout aligne les widgets enfants horizontalement ou verticalement. En savoir plus...
| En-tête : | #include <QBoxLayout> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QLayout |
| Hérité par : |
Types publics
| enum | Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop } |
Fonctions publiques
| QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr) | |
| virtual | ~QBoxLayout() |
| void | addLayout(QLayout *layout, int stretch = 0) |
| void | addSpacerItem(QSpacerItem *spacerItem) |
| void | addSpacing(int size) |
| void | addStretch(int stretch = 0) |
| void | addStrut(int size) |
| void | addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) |
| QBoxLayout::Direction | direction() const |
| void | insertItem(int index, QLayoutItem *item) |
| void | insertLayout(int index, QLayout *layout, int stretch = 0) |
| void | insertSpacerItem(int index, QSpacerItem *spacerItem) |
| void | insertSpacing(int index, int size) |
| void | insertStretch(int index, int stretch = 0) |
| void | insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) |
| void | setDirection(QBoxLayout::Direction direction) |
| void | setStretch(int index, int stretch) |
| bool | setStretchFactor(QWidget *widget, int stretch) |
| bool | setStretchFactor(QLayout *layout, int stretch) |
| int | stretch(int index) const |
Fonctions publiques réimplémentées
| virtual void | addItem(QLayoutItem *item) override |
| virtual int | count() const override |
| virtual Qt::Orientations | expandingDirections() const override |
| virtual bool | hasHeightForWidth() const override |
| virtual int | heightForWidth(int w) const override |
| virtual void | invalidate() override |
| virtual QLayoutItem * | itemAt(int index) const override |
| virtual QSize | maximumSize() const override |
| virtual int | minimumHeightForWidth(int w) const override |
| virtual QSize | minimumSize() const override |
| virtual void | setGeometry(const QRect &r) override |
| virtual void | setSpacing(int spacing) override |
| virtual QSize | sizeHint() const override |
| virtual int | spacing() const override |
| virtual QLayoutItem * | takeAt(int index) override |
Description détaillée
QBoxLayout utilise l'espace qui lui est alloué (par sa disposition parente ou par la fonction ` parentWidget()`), le divise en une rangée de cases et fait en sorte que chaque widget géré occupe une case.

Si l'orientation de QBoxLayout est Qt::Horizontal, les cases sont disposées en ligne, avec des tailles adaptées. Chaque widget (ou autre case) occupera au minimum sa taille minimale et au maximum sa taille maximale. Tout espace excédentaire est réparti selon les facteurs d'étirement (plus d'informations à ce sujet ci-dessous).

Si l’orientation du QBoxLayout est Qt::Vertical, les cases sont disposées en colonne, là encore avec des tailles adaptées.
La manière la plus simple de créer un QBoxLayout consiste à utiliser l’une des classes de commodité, par exemple QHBoxLayout (pour des boîtes en « Qt::Horizontal ») ou QVBoxLayout (pour des boîtes en « Qt::Vertical »). Vous pouvez également utiliser directement le constructeur de QBoxLayout, en spécifiant son orientation comme suit : LeftToRight, RightToLeft, TopToBottom ou BottomToTop.
Si le QBoxLayout n’est pas la disposition de niveau supérieur (c’est-à-dire s’il ne gère pas l’intégralité de la zone du widget et de ses enfants), vous devez l’ajouter à sa disposition parente avant de pouvoir l’utiliser. La méthode habituelle pour ajouter une disposition consiste à appeler parentLayout->addLayout().
Une fois cette opération effectuée, vous pouvez ajouter des boîtes au QBoxLayout à l'aide de l'une des quatre fonctions suivantes :
- addWidget() pour ajouter un widget au QBoxLayout et définir son facteur d’étirement. (Le facteur d’étirement s’applique sur la ligne des boîtes.)
- addSpacing() pour créer une boîte vide ; c'est l'une des fonctions que vous utilisez pour créer des boîtes de dialogue agréables et spacieuses. Voir ci-dessous pour savoir comment définir les marges.
- addStretch() pour créer une boîte vide et extensible.
- addLayout() pour ajouter à la ligne une boîte contenant un autre QLayout et définir le facteur d'étirement de cette disposition.
Utilisez insertWidget(), insertSpacing(), insertStretch() ou insertLayout() pour insérer une boîte à une position spécifiée dans la mise en page.
QBoxLayout propose également deux largeurs de marge :
- setContentsMargins() définit la largeur de la bordure extérieure de chaque côté du widget. Il s’agit de la largeur de l’espace réservé le long de chacun des quatre côtés du QBoxLayout.
- setSpacing() définit la largeur entre les boîtes voisines. (Vous pouvez utiliser addSpacing() pour obtenir plus d'espace à un endroit précis.)
La valeur par défaut de la marge est fournie par le style. La marge par défaut spécifiée par la plupart des styles Qt est de 9 pour les widgets enfants et de 11 pour les fenêtres. L’espacement par défaut est identique à la largeur de la marge pour une disposition de niveau supérieur, ou identique à celle de la disposition parente.
Pour retirer un widget d’une mise en page, appelez ` removeWidget()`. L’appel de ` QWidget::hide()` sur un widget a également pour effet de retirer ce dernier de la mise en page jusqu’à ce que ` QWidget::show()` soit appelé.
Vous préférerez presque toujours utiliser ` QVBoxLayout ` et ` QHBoxLayout ` plutôt que `QBoxLayout` en raison de la commodité de leurs constructeurs.
Voir également QGridLayout, QStackedLayout et Gestion de la mise en page.
Documentation sur les types de membres
enum QBoxLayout::Direction
Ce type sert à déterminer l'orientation d'une disposition en blocs.
| Constante | Valeur | Description |
|---|---|---|
QBoxLayout::LeftToRight | 0 | Horizontal, de gauche à droite. |
QBoxLayout::RightToLeft | 1 | Horizontal, de droite à gauche. |
QBoxLayout::TopToBottom | 2 | Vertical, de haut en bas. |
QBoxLayout::BottomToTop | 3 | Vertical, de bas en haut. |
Documentation sur les fonctions membres
[explicit] QBoxLayout::QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)
Crée un nouveau QBoxLayout avec la direction dir et le widget parent parent.
La disposition est définie directement comme disposition de niveau supérieur pour parent. Il ne peut y avoir qu'une seule disposition de niveau supérieur pour un widget. Elle est renvoyée par QWidget::layout().
Voir également direction() et QWidget::setLayout().
[virtual noexcept] QBoxLayout::~QBoxLayout()
Supprime cette mise en page de la boîte.
Les widgets de la disposition ne sont pas détruits.
[override virtual] void QBoxLayout::addItem(QLayoutItem *item)
Réimplémente : QLayout::addItem(QLayoutItem *item).
void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)
Ajoute « layout » à la fin de la boîte, avec un facteur d'étirement en série de stretch.
layout Devient un élément enfant de la mise en page de la boîte.
Voir également insertLayout(), addItem() et addWidget().
void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)
Ajoute spacerItem à la fin de cette mise en page de boîte.
La propriété de spacerItem est transférée à cette mise en page.
Voir également addSpacing() et addStretch().
void QBoxLayout::addSpacing(int size)
Ajoute un espace non extensible (un « QSpacerItem ») de taille size à la fin de cette mise en page de boîte. QBoxLayout fournit les marges et espacements par défaut. Cette fonction ajoute un espace supplémentaire.
Voir également insertSpacing(), addItem() et QSpacerItem.
void QBoxLayout::addStretch(int stretch = 0)
Ajoute un espace extensible (un « QSpacerItem ») de taille minimale nulle et de facteur d'extension stretch à la fin de cette mise en page de boîte.
Voir également insertStretch(), addItem() et QSpacerItem.
void QBoxLayout::addStrut(int size)
Limite la dimension perpendiculaire de la boîte (par exemple, la hauteur si la boîte est de type « LeftToRight ») à une valeur minimale de size. D'autres contraintes peuvent augmenter cette limite.
Voir également addItem().
void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
Ajoute widget à la fin de cette mise en page de boîte, avec un facteur d'étirement de stretch et un alignement de alignment.
Le facteur d'étirement s'applique uniquement au sein de l'direction de l'QBoxLayout, et est relatif aux autres boîtes et widgets de ce QBoxLayout. Les widgets et les boîtes ayant des facteurs d'étirement plus élevés s'agrandissent davantage.
Si le facteur d'étirement est égal à 0 et qu'aucun autre élément de l'QBoxLayout ne possède un facteur d'étirement supérieur à zéro, l'espace est réparti en fonction de la QWidget::sizePolicy() de chaque widget concerné.
L’alignement est spécifié par alignment. L’alignement par défaut est 0, ce qui signifie que le widget occupe toute la cellule.
widget devient un enfant de l’ QLayout::parentWidget().
Voir également insertWidget(), addItem(), addLayout(), addStretch(), addSpacing() et addStrut().
[override virtual] int QBoxLayout::count() const
Réimplémente : QLayout::count() const.
QBoxLayout::Direction QBoxLayout::direction() const
Renvoie la direction de la boîte. Les fonctions ` addWidget()` et ` addSpacing()` agissent dans cette direction ; l'étirement s'effectue dans cette direction.
Voir également setDirection(), QBoxLayout::Direction, addWidget() et addSpacing().
[override virtual] Qt::Orientations QBoxLayout::expandingDirections() const
Réimplémente : QLayout::expandingDirections() const.
[override virtual] bool QBoxLayout::hasHeightForWidth() const
Réimplémente : QLayoutItem::hasHeightForWidth() const.
[override virtual] int QBoxLayout::heightForWidth(int w) const
Réimplémente : QLayoutItem::heightForWidth(int) const.
void QBoxLayout::insertItem(int index, QLayoutItem *item)
Insère item dans cette mise en page de boîte à la position index. L'index doit être soit négatif, soit compris entre 0 et count(), inclus. Si index est négatif ou égal à count(), l'élément est ajouté à la fin.
La propriété de item est transmise à cette mise en page.
Voir également addItem(), insertWidget(), insertLayout(), insertStretch() et insertSpacing().
void QBoxLayout::insertLayout(int index, QLayout *layout, int stretch = 0)
Insère layout à la position index, avec un facteur d'étirement de stretch. Si index est négatif, la mise en page est ajoutée à la fin.
layout devient un enfant de la mise en page de la boîte.
Voir également addLayout() et insertItem().
void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)
Insère spacerItem à la position index, avec une taille minimale et un facteur d'étirement égaux à zéro. Si index est négatif, l'espace est ajouté à la fin.
La propriété de spacerItem est transmise à cette mise en page.
Voir également addSpacerItem(), insertStretch() et insertSpacing().
void QBoxLayout::insertSpacing(int index, int size)
Insère un espace non extensible ( QSpacerItem) à la position index, avec une taille de size. Si index est négatif, l'espace est ajouté à la fin.
La mise en page de la boîte comporte des marges et un espacement par défaut. Cette fonction ajoute un espace supplémentaire.
Voir également addSpacing(), insertItem() et QSpacerItem.
void QBoxLayout::insertStretch(int index, int stretch = 0)
Insère un espace extensible (un QSpacerItem) à la position index, avec une taille minimale nulle et un facteur d'étirement stretch. Si index est négatif, l'espace est ajouté à la fin.
Voir également addStretch(), insertItem() et QSpacerItem.
void QBoxLayout::insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
Insère widget à la position index, avec un facteur d'étirement stretch et un alignement alignment. Si index est négatif, le widget est ajouté à la fin.
Le facteur d’étirement s’applique uniquement au sein de l’ direction de l’ QBoxLayout et est relatif aux autres boîtes et widgets de cette QBoxLayout. Les widgets et les boîtes présentant des facteurs d’étirement plus élevés s’étendent davantage.
Si le facteur d’étirement est égal à 0 et qu’aucun autre élément de l’ QBoxLayout ne présente un facteur d’étirement supérieur à zéro, l’espace est réparti en fonction de la QWidget::sizePolicy() de chaque widget concerné.
L’alignement est spécifié par alignment. L’alignement par défaut est 0, ce qui signifie que le widget occupe toute la cellule.
widget devient un enfant de l’ QLayout::parentWidget().
Voir également addWidget() et insertItem().
[override virtual] void QBoxLayout::invalidate()
Réimplémente : QLayout::invalidate().
Réinitialise les informations mises en cache.
[override virtual] QLayoutItem *QBoxLayout::itemAt(int index) const
Réimplémente : ` QLayout::itemAt(int index) const`.
[override virtual] QSize QBoxLayout::maximumSize() const
Réimplémente : QLayout::maximumSize() const.
[override virtual] int QBoxLayout::minimumHeightForWidth(int w) const
Réimplémente : QLayoutItem::minimumHeightForWidth(int w) const.
[override virtual] QSize QBoxLayout::minimumSize() const
Réimplémente : QLayout::minimumSize() const.
void QBoxLayout::setDirection(QBoxLayout::Direction direction)
Définit l'orientation de cette mise en page sur « direction ».
Voir également direction().
[override virtual] void QBoxLayout::setGeometry(const QRect &r)
Réimplémente : QLayout::setGeometry(const QRect &r).
[override virtual] void QBoxLayout::setSpacing(int spacing)
Réimplémente une fonction d'accès pour la propriété : QLayout::spacing.
Réimplémente la méthode QLayout::setSpacing(). Définit la propriété d'espacement sur spacing.
Voir également QLayout::setSpacing() et spacing().
void QBoxLayout::setStretch(int index, int stretch)
Définit le facteur d'étirement à la position index sur stretch.
Voir également stretch().
bool QBoxLayout::setStretchFactor(QWidget *widget, int stretch)
Définit le facteur d'étirement de widget sur stretch et renvoie « true » si widget est présent dans cette mise en page (à l'exclusion des mises en page enfants) ; sinon, renvoie « false ».
Voir également setAlignment().
bool QBoxLayout::setStretchFactor(QLayout *layout, int stretch)
Définit le facteur d'étirement de la mise en page layout sur stretch et renvoie true si layout est détecté dans cette mise en page (à l'exclusion des mises en page enfants) ; sinon, renvoie false.
Il s'agit d'une fonction surchargée.
[override virtual] QSize QBoxLayout::sizeHint() const
Réimplémente : ` QLayoutItem::sizeHint()` const.
[override virtual] int QBoxLayout::spacing() const
Réimplémente une fonction d'accès pour la propriété : QLayout::spacing.
Réimplémente la méthode QLayout::spacing(). Si la propriété spacing est valide, cette valeur est renvoyée. Sinon, une valeur pour la propriété spacing est calculée et renvoyée. Étant donné que l'espacement de la mise en page dans un widget dépend du style, si le parent est un widget, il interroge le style pour obtenir l'espacement (horizontal ou vertical) de la mise en page. Sinon, le parent est une mise en page, et il interroge la mise en page parente pour obtenir la valeur de spacing().
Voir également QLayout::spacing() et setSpacing().
int QBoxLayout::stretch(int index) const
Renvoie le facteur d'étirement à la position index.
Voir également setStretch().
[override virtual] QLayoutItem *QBoxLayout::takeAt(int index)
Réimplémente : QLayout::takeAt(int index).
© 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.