Sur cette page

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

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

Une grille

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.