Sur cette page

QGridLayout Class

La classe QGridLayout organise les widgets selon une grille. En savoir plus...

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

Propriétés

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 utilise l'espace qui lui est alloué (par sa disposition parente ou par la fonction parentWidget()), le divise en lignes et en colonnes, puis place chaque widget qu'il gère dans la cellule appropriée.

Les colonnes et les lignes se comportent de manière identique ; nous aborderons ici les colonnes, mais il existe des fonctions équivalentes pour les lignes.

Chaque colonne possède une largeur minimale et un facteur d’étirement. La largeur minimale est la plus grande valeur entre celle définie par la fonction ` setColumnMinimumWidth()` et la largeur minimale de chaque widget de cette colonne. Le facteur d’étirement est défini par la fonction ` setColumnStretch()` et détermine la part de l’espace disponible que la colonne occupera au-delà de son minimum nécessaire.

Normalement, chaque widget ou mise en page gérée est placée dans sa propre cellule à l’aide de ` addWidget()`. Il est également possible pour un widget d’occuper plusieurs cellules en utilisant les surcharges de ` addItem()` et ` addWidget()` permettant de s’étendre sur plusieurs lignes et colonnes. Si vous procédez ainsi, QGridLayout déterminera automatiquement comment répartir la taille entre les colonnes et les lignes (en fonction des facteurs d’étirement).

Pour retirer un widget d’une disposition, appelez ` removeWidget()`. L’appel de ` QWidget::hide()` sur un widget a également pour effet de retirer ce dernier de la disposition jusqu’à ce que ` QWidget::show()` soit appelé.

Cette illustration montre un fragment de boîte de dialogue comportant une grille à cinq colonnes et trois lignes (la grille est représentée en superposition en magenta) :

Une mise en page en grille

Les colonnes 0, 2 et 4 de ce fragment de boîte de dialogue sont composées respectivement d’un QLabel, d’un QLineEdit et d’un QListBox. Les colonnes 1 et 3 sont des espaces réservés créés à l’aide de setColumnMinimumWidth(). La ligne 0 se compose de trois objets QLabel, la ligne 1 de trois objets QLineEdit et la ligne 2 de trois objets QListBox. Nous avons utilisé des colonnes de remplissage (1 et 3) pour obtenir un espacement adéquat entre les colonnes.

Notez que les colonnes et les lignes n’ont pas toutes 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 leurs largeurs minimales et leurs facteurs d’étirement de manière à ce qu’ils soient identiques. Pour ce faire, utilisez les méthodes setColumnMinimumWidth() et setColumnStretch().

Si le QGridLayout n’est pas la mise en page de niveau supérieur (c’est-à-dire s’il ne gère pas l’intégralité de la zone du widget et de ses éléments enfants), vous devez l’ajouter à sa mise en page parente lors de sa création, mais avant d’effectuer toute opération sur celui-ci. La méthode habituelle pour ajouter une mise en page consiste à appeler la méthode addLayout() sur la mise en page parente.

Une fois votre disposition ajoutée, vous pouvez commencer à placer des widgets et d’autres dispositions dans les cellules de votre disposition en grille à l’aide des méthodes addWidget(), addItem() et addLayout().

QGridLayout inclut également deux largeurs de marge : la marge de contenu ( contents margin ) et la marge d’espacement ( spacing()). La marge de contenu correspond à la largeur de l’espace réservé le long de chacun des quatre côtés du QGridLayout. La marge d’espacement ( spacing()) correspond à la largeur de l’espacement automatiquement alloué entre les cases voisines.

Les valeurs par défaut de la marge de contenu sont fournies par la fonction ` style`. La valeur par défaut spécifiée par les 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 marge d’une disposition de niveau supérieur, ou à celle de la disposition parente.

Voir également QBoxLayout, QStackedLayout, Gestion de la mise en page et Exemple de mises en page 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 mise en page est hérité de la mise en page parente ou des paramètres de style du widget parente.

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 disposés les uns au-dessus des autres

Si aucune valeur n'est explicitement définie, l'espacement vertical de la disposition est hérité de la disposition parente 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)

Crée un nouveau QGridLayout avec le widget parent, parent. La disposition comporte initialement une ligne et une colonne, et s'étendra à mesure que de nouveaux éléments seront insérés.

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 la méthode QWidget::layout().

Si ` parent ` est ` nullptr`, vous devez alors insérer cette disposition en grille dans une autre disposition, ou la définir comme disposition d’un widget à l’aide de ` QWidget::setLayout()`.

Voir également QWidget::setLayout().

[virtual noexcept] QGridLayout::~QGridLayout()

Détruit la mise en page en 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 mise en page 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, sur rowSpan lignes et columnSpan colonnes, et l'aligne selon alignment. Si rowSpan et/ou columnSpan est égal à -1, l'élément s'étendra respectivement jusqu'au bord inférieur et/ou droit. La mise en page prend en charge la gestion de item.

Avertissement : n’utilisez pas cette fonction pour ajouter des mises en page enfants ou des éléments de widget enfants. Utilisez plutôt addLayout() ou addWidget().

void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())

Place l'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 occupe toute la cellule.

Un alignement différent de zéro indique que la disposition ne doit pas s'étendre pour remplir l'espace disponible, mais doit être redimensionnée en fonction de ` sizeHint()`.

layout devient un enfant de la mise en page 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 mise en page « layout » à la grille de cellules, couvrant plusieurs lignes et colonnes. La cellule commencera à « row », « column » et s'étendra sur « rowSpan » lignes et « columnSpan » colonnes.

Si rowSpan et/ou columnSpan est égal à -1, la mise en page s'étendra respectivement jusqu'au bord inférieur et/ou droit.

Il s'agit d'une fonction surchargée.

void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())

Ajoute l'widget donné à la grille de cellules à l'adresse 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 occupe toute la cellule.

void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

Cette version ajoute l'widget spécifiée à la grille de cellules, en s'étendant sur plusieurs lignes et colonnes. La cellule commencera à fromRow, fromColumn et s'étendra sur rowSpan lignes et columnSpan colonnes. L'widget aura la valeur spécifiée alignment.

Si rowSpan et/ou columnSpan est égal à -1, alors le widget s'étendra respectivement jusqu'au bord inférieur et/ou droit.

Il s'agit d'une fonction surchargée.

QRect QGridLayout::cellRect(int row, int column) const

Renvoie la géométrie de la cellule située à la ligne row et à la colonne column dans la grille. Renvoie un rectangle non valide si row ou column se trouve en dehors de la grille.

Avertissement : dans la version actuelle de Qt, cette fonction ne renvoie pas de résultats valides tant que la méthode setGeometry() n’a pas été appelée, c’est-à-dire tant que la méthode parentWidget() n’a pas été appelée pour rendre la cellule 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 l'column.

Voir aussi setColumnMinimumWidth().

int QGridLayout::columnStretch(int column) const

Renvoie le facteur d'étirement de 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 de position de l'élément dont l'index est spécifiée.

Les variables passées sous forme d’ row et d’ column sont mises à jour avec la position de l’élément dans la mise en page, tandis que les variables rowSpan et columnSpan sont mises à jour avec les largeurs verticale et horizontale de l’élément.

Voir également 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 également 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é comme origine de la grille, c'est-à-dire pour la position (0, 0).

Voir également 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 aussi setRowMinimumHeight().

int QGridLayout::rowStretch(int row) const

Renvoie le facteur d'étirement de la ligne row.

Voir aussi setRowStretch().

void QGridLayout::setColumnMinimumWidth(int column, int minSize)

Définit la largeur minimale de la colonne column à minSize pixels.

Voir également columnMinimumWidth() et setRowMinimumHeight().

void QGridLayout::setColumnStretch(int column, int stretch)

Définit le facteur d'étirement de la colonne column sur stretch. La première colonne porte le numéro 0.

Le facteur d'étirement est relatif aux autres colonnes de cette grille. Les colonnes ayant un facteur d'étirement plus élevé occupent une plus grande partie de l'espace disponible.

Le facteur d'étirement par défaut est 0. Si le facteur d'étirement est égal à 0 et qu'aucune autre colonne de ce tableau ne peut s'étendre, cette colonne peut tout de même s'étendre.

Une autre approche consiste à ajouter un espacement à l'aide de la fonction addItem() avec un 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)

Définit le coin d'origine de la grille, c'est-à-dire la position (0, 0), sur corner.

Voir également originCorner().

void QGridLayout::setRowMinimumHeight(int row, int minSize)

Définit la hauteur minimale de la ligne row à minSize pixels.

Voir également rowMinimumHeight() et setColumnMinimumWidth().

void QGridLayout::setRowStretch(int row, int stretch)

Définit le facteur d'étirement de la ligne row sur stretch. La première ligne porte le numéro 0.

Le facteur d'étirement est relatif aux autres lignes de cette grille. Les lignes ayant un facteur d'étirement plus élevé occupent une plus grande partie de l'espace disponible.

Le facteur d'étirement par défaut est 0. Si le facteur d'étirement est 0 et qu'aucune autre ligne de ce tableau ne peut s'étendre, cette ligne peut tout de même s'étendre.

Voir également rowStretch(), setRowMinimumHeight() et setColumnStretch().

[override virtual] void QGridLayout::setSpacing(int spacing)

Réimplémente une fonction d'accès pour la propriété : QLayout::spacing.

Cette fonction définit l’espacement vertical et horizontal sur spacing.

Voir également 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 pour la propriété : QLayout::spacing.

Si l'espacement vertical est égal à l'espacement horizontal, cette fonction renvoie cette valeur ; sinon, elle renvoie -1.

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