QGridLayout Class
La classe QGridLayout permet de disposer les widgets dans une grille. Plus d'informations...
| En-tête : | #include <QGridLayout> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Héritages : | QLayout |
Propriétés
- horizontalSpacing : int
- verticalSpacing : int
Fonctions publiques
| QGridLayout(QWidget *parent = nullptr) | |
| virtual | ~QGridLayout() |
| void | addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment()) |
| void | addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
| void | addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
| void | addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
| void | addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
| QRect | cellRect(int row, int column) const |
| int | columnCount() const |
| int | columnMinimumWidth(int column) const |
| int | columnStretch(int column) const |
| void | getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const |
| int | horizontalSpacing() const |
| QLayoutItem * | itemAtPosition(int row, int column) const |
| Qt::Corner | originCorner() const |
| int | rowCount() const |
| int | rowMinimumHeight(int row) const |
| int | rowStretch(int row) const |
| void | setColumnMinimumWidth(int column, int minSize) |
| void | setColumnStretch(int column, int stretch) |
| void | setHorizontalSpacing(int spacing) |
| void | setOriginCorner(Qt::Corner corner) |
| void | setRowMinimumHeight(int row, int minSize) |
| void | setRowStretch(int row, int stretch) |
| void | setVerticalSpacing(int spacing) |
| int | verticalSpacing() const |
Fonctions publiques réimplémentées
| 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 &rect) override |
| virtual void | setSpacing(int spacing) override |
| virtual QSize | sizeHint() const override |
| virtual int | spacing() const override |
| virtual QLayoutItem * | takeAt(int index) override |
Fonctions protégées réimplémentées
| virtual void | addItem(QLayoutItem *item) override |
Description détaillée
QGridLayout prend l'espace mis à sa disposition (par son layout parent ou par parentWidget()), le divise en lignes et en colonnes et place chaque widget qu'il gère dans la bonne cellule.
Les colonnes et les lignes se comportent de la même manière ; nous parlerons des colonnes, mais il existe des fonctions équivalentes pour les lignes.
Chaque colonne a une largeur minimale et un facteur d'étirement. La largeur minimale est la plus grande des valeurs définies à l'aide de setColumnMinimumWidth() et la largeur minimale de chaque widget de cette colonne. Le facteur d'étirement est défini à l'aide de setColumnStretch() et détermine la part de l'espace disponible que la colonne obtiendra en plus de son minimum nécessaire.
Normalement, chaque widget ou disposition géré est placé dans sa propre cellule à l'aide de addWidget(). Il est également possible pour un widget d'occuper plusieurs cellules en utilisant les surcharges d'extension de ligne et de colonne de addItem() et addWidget(). Dans ce cas, QGridLayout déterminera comment répartir la taille sur les colonnes et les lignes (en fonction des facteurs d'étirement).
Pour supprimer un widget d'une disposition, appelez removeWidget(). L'appel à QWidget::hide() sur un widget supprime également le widget de la disposition jusqu'à ce que QWidget::show() soit appelé.
Cette illustration montre un fragment de boîte de dialogue avec une grille de cinq colonnes et trois rangées (la grille est représentée en magenta) :

Les colonnes 0, 2 et 4 de ce fragment de dialogue sont constituées d'une QLabel, d'une QLineEdit et d'une QListBox. Les colonnes 1 et 3 sont des espaces réservés créés avec setColumnMinimumWidth(). La ligne 0 est constituée de trois objets QLabel, la ligne 1 de trois objets QLineEdit et la ligne 2 de trois objets QListBox. Nous avons utilisé des colonnes fictives (1 et 3) pour obtenir un espace suffisant entre les colonnes.
Notez que les colonnes et les lignes n'ont pas la même largeur ni la même hauteur. Si vous souhaitez que deux colonnes aient la même largeur, vous devez définir vous-même leur largeur minimale et leur facteur d'étirement. Pour ce faire, utilisez setColumnMinimumWidth() et setColumnStretch().
Si le QGridLayout n'est pas la disposition de premier niveau (c'est-à-dire qu'il ne gère pas l'ensemble de la zone et des enfants du widget), vous devez l'ajouter à sa disposition parentale lorsque vous le créez, mais avant de faire quoi que ce soit avec lui. La manière normale d'ajouter une disposition est d'appeler addLayout() sur la disposition parente.
Une fois que vous avez ajouté votre disposition, vous pouvez commencer à placer des widgets et d'autres dispositions dans les cellules de votre grille à l'aide de addWidget(), addItem() et addLayout().
QGridLayout comprend également deux largeurs de marge : contents margin et spacing(). La marge de contenu est la largeur de l'espace réservé le long de chacun des quatre côtés de QGridLayout. La marge spacing() est la largeur de l'espace automatiquement alloué entre les cases voisines.
Les valeurs par défaut de la marge de contenu sont fournies par style. La valeur par défaut spécifiée par les styles Qt Widgets est de 9 pour les widgets enfants et de 11 pour les fenêtres. Par défaut, l'espacement est identique à la largeur de la marge pour une disposition de niveau supérieur ou à la disposition parentale.
Voir également QBoxLayout, QStackedLayout, Gestion des dispositions et Exemple de dispositions de base.
Documentation sur les propriétés
horizontalSpacing : int
Cette propriété définit l'espacement entre les widgets disposés côte à côte
Si aucune valeur n'est explicitement définie, l'espacement horizontal de la disposition est hérité de la disposition parentale ou des paramètres de style du widget parent.
Fonctions d'accès :
| int | horizontalSpacing() const |
| void | setHorizontalSpacing(int spacing) |
Voir également verticalSpacing, QStyle::pixelMetric() et PM_LayoutHorizontalSpacing.
verticalSpacing : int
Cette propriété définit l'espacement entre les widgets superposés
Si aucune valeur n'est explicitement définie, l'espacement vertical de la disposition est hérité de la disposition parentale ou des paramètres de style du widget parent.
Fonctions d'accès :
| int | verticalSpacing() const |
| void | setVerticalSpacing(int spacing) |
Voir également horizontalSpacing, QStyle::pixelMetric() et PM_LayoutHorizontalSpacing.
Documentation des fonctions membres
[explicit] QGridLayout::QGridLayout(QWidget *parent = nullptr)
Construit un nouveau QGridLayout avec le widget parent, parent. La grille comporte initialement une ligne et une colonne et s'étendra lorsque de nouveaux éléments seront insérés.
La disposition est définie directement comme la disposition de premier niveau pour parent. Il ne peut y avoir qu'une seule présentation de premier niveau pour un widget. Elle est renvoyée par QWidget::layout().
Si parent est nullptr, vous devez insérer cette disposition de grille dans une autre disposition ou la définir comme disposition d'un widget à l'aide de QWidget::setLayout().
Voir aussi QWidget::setLayout().
[virtual noexcept] QGridLayout::~QGridLayout()
Détruit l'agencement de la grille. La gestion de la géométrie est interrompue s'il s'agit d'une grille de niveau supérieur.
Les widgets de la grille ne sont pas détruits.
[override virtual protected] void QGridLayout::addItem(QLayoutItem *item)
Réimplémente : QLayout::addItem(QLayoutItem *item).
void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
Ajoute item à la position row, column, enjambant les lignes rowSpan et les colonnes columnSpan, et l'aligne conformément à alignment. Si rowSpan et/ou columnSpan est -1, l'élément s'étendra jusqu'au bord inférieur et/ou droit, respectivement. La mise en page s'approprie l'élément item.
Attention : N'utilisez pas cette fonction pour ajouter des dispositions ou des éléments de widgets enfants. Utilisez plutôt addLayout() ou addWidget().
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Place le site layout à la position (row, column) dans la grille. La position en haut à gauche est (0, 0).
L'alignement est spécifié par alignment. L'alignement par défaut est 0, ce qui signifie que le widget remplit toute la cellule.
Un alignement non nul indique que la disposition ne doit pas s'agrandir pour remplir l'espace disponible, mais qu'elle doit être dimensionnée conformément à sizeHint().
layout devient un enfant de la disposition de la grille.
void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Cette version ajoute la disposition layout à la grille de cellules, qui s'étend sur plusieurs lignes/colonnes. La cellule commencera à row, column s'étendant sur rowSpan lignes et columnSpan colonnes.
Si rowSpan et/ou columnSpan vaut -1, la disposition s'étendra jusqu'au bord inférieur et/ou droit, respectivement.
Il s'agit d'une fonction surchargée.
void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Ajoute l'adresse widget à la grille de cellules à row, column. La position en haut à gauche est (0, 0) par défaut.
L'alignement est spécifié par alignment. L'alignement par défaut est 0, ce qui signifie que le widget remplit toute la cellule.
void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Cette version ajoute le site widget à la grille de cellules, sur plusieurs lignes/colonnes. La cellule commencera à fromRow, fromColumn s'étendant sur rowSpan lignes et columnSpan colonnes. L'adresse widget aura l'adresse alignment.
Si rowSpan et/ou columnSpan vaut -1, le widget s'étendra jusqu'au bord inférieur et/ou droit, respectivement.
Il s'agit d'une fonction surchargée.
QRect QGridLayout::cellRect(int row, int column) const
Renvoie la géométrie de la cellule avec la ligne row et la colonne column dans la grille. Renvoie un rectangle non valide si row ou column est en dehors de la grille.
Attention : dans la version actuelle de Qt XML, cette fonction ne renvoie pas de résultats valides tant que setGeometry() n'a pas été appelé, c'est-à-dire après que le parentWidget() est visible.
int QGridLayout::columnCount() const
Renvoie le nombre de colonnes de cette grille.
int QGridLayout::columnMinimumWidth(int column) const
Renvoie l'espacement des colonnes pour la colonne column.
Voir aussi setColumnMinimumWidth().
int QGridLayout::columnStretch(int column) const
Renvoie le facteur d'étirement pour la colonne column.
Voir aussi setColumnStretch().
[override virtual] int QGridLayout::count() const
Réimplémente : QLayout::count() const.
[override virtual] Qt::Orientations QGridLayout::expandingDirections() const
Réimplémente : QLayout::expandingDirections() const.
void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
Renvoie les informations relatives à la position de l'élément correspondant à l'adresse index.
Les variables passées comme row et column sont mises à jour avec la position de l'élément dans la mise en page, et les variables rowSpan et columnSpan sont mises à jour avec les portées verticales et horizontales de l'élément.
Voir aussi itemAtPosition() et itemAt().
[override virtual] bool QGridLayout::hasHeightForWidth() const
Réimplémente : QLayoutItem::hasHeightForWidth() const.
[override virtual] int QGridLayout::heightForWidth(int w) const
Réimplémente : QLayoutItem::heightForWidth(int) const.
[override virtual] void QGridLayout::invalidate()
Réimplémente : QLayout::invalidate().
[override virtual] QLayoutItem *QGridLayout::itemAt(int index) const
Réimplémente : QLayout::itemAt(int index) const.
QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const
Renvoie l'élément de mise en page qui occupe la cellule (row, column), ou nullptr si la cellule est vide.
Voir aussi getItemPosition() et indexOf().
[override virtual] QSize QGridLayout::maximumSize() const
Réimplémente : QLayout::maximumSize() const.
[override virtual] int QGridLayout::minimumHeightForWidth(int w) const
Réimplémente : QLayoutItem::minimumHeightForWidth(int w) const.
[override virtual] QSize QGridLayout::minimumSize() const
Réimplémente : QLayout::minimumSize() const.
Qt::Corner QGridLayout::originCorner() const
Renvoie le coin utilisé pour l'origine de la grille, c'est-à-dire pour la position (0, 0).
Voir aussi setOriginCorner().
int QGridLayout::rowCount() const
Renvoie le nombre de lignes de cette grille.
int QGridLayout::rowMinimumHeight(int row) const
Renvoie la largeur minimale définie pour la ligne row.
Voir également setRowMinimumHeight().
int QGridLayout::rowStretch(int row) const
Renvoie le facteur d'étirement pour la ligne row.
Voir également setRowStretch().
void QGridLayout::setColumnMinimumWidth(int column, int minSize)
Fixe la largeur minimale de la colonne column à minSize pixels.
Voir aussi columnMinimumWidth() et setRowMinimumHeight().
void QGridLayout::setColumnStretch(int column, int stretch)
Définit le facteur d'étirement de la colonne column à stretch. La première colonne porte le numéro 0.
Le facteur d'étirement est relatif aux autres colonnes de cette grille. Les colonnes dont le facteur d'étirement est plus élevé occupent une plus grande partie de l'espace disponible.
Le facteur d'étirement par défaut est de 0. Si le facteur d'étirement est de 0 et qu'aucune autre colonne de ce tableau ne peut croître, la colonne peut quand même croître.
Une autre approche consiste à ajouter de l'espace en utilisant addItem() avec QSpacerItem.
Voir également columnStretch() et setRowStretch().
[override virtual] void QGridLayout::setGeometry(const QRect &rect)
Réimplémente : QLayout::setGeometry(const QRect &r).
void QGridLayout::setOriginCorner(Qt::Corner corner)
Fixe le coin d'origine de la grille, c'est-à-dire la position (0, 0), à corner.
Voir aussi originCorner().
void QGridLayout::setRowMinimumHeight(int row, int minSize)
Fixe la hauteur minimale de la ligne row à minSize pixels.
Voir aussi rowMinimumHeight() et setColumnMinimumWidth().
void QGridLayout::setRowStretch(int row, int stretch)
Définit le facteur d'étirement de la ligne row à stretch. La première ligne porte le numéro 0.
Le facteur d'étirement est relatif aux autres lignes de cette grille. Les lignes dont le facteur d'étirement est plus élevé occupent une plus grande partie de l'espace disponible.
Le facteur d'étirement par défaut est de 0. Si le facteur d'étirement est de 0 et qu'aucune autre ligne de ce tableau ne peut croître, la ligne peut quand même croître.
Voir également rowStretch(), setRowMinimumHeight() et setColumnStretch().
[override virtual] void QGridLayout::setSpacing(int spacing)
Réimplémente une fonction d'accès à la propriété : QLayout::spacing.
Cette fonction fixe l'espacement vertical et horizontal à spacing.
Voir aussi spacing(), setVerticalSpacing() et setHorizontalSpacing().
[override virtual] QSize QGridLayout::sizeHint() const
Réimplémente : QLayoutItem::sizeHint() const.
[override virtual] int QGridLayout::spacing() const
Réimplémente une fonction d'accès à la propriété : QLayout::spacing.
Si l'espacement vertical est égal à l'espacement horizontal, cette fonction renvoie cette valeur ; sinon, elle renvoie -1.
Voir aussi setSpacing(), verticalSpacing() et horizontalSpacing().
[override virtual] QLayoutItem *QGridLayout::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.