Sur cette page

QFormLayout Class

La classe QFormLayout gère les formes des widgets de saisie et leurs étiquettes associées. Plus d'informations...

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

Types publics

struct TakeRowResult
enum FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow }
enum ItemRole { LabelRole, FieldRole, SpanningRole }
enum RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows }

Propriétés

Fonctions publiques

QFormLayout(QWidget *parent = nullptr)
virtual ~QFormLayout()
void addRow(QWidget *label, QWidget *field)
void addRow(QLayout *layout)
void addRow(QWidget *widget)
void addRow(QWidget *label, QLayout *field)
void addRow(const QString &labelText, QLayout *field)
void addRow(const QString &labelText, QWidget *field)
QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const
Qt::Alignment formAlignment() const
void getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
void getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
void getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
int horizontalSpacing() const
void insertRow(int row, QWidget *label, QWidget *field)
void insertRow(int row, QLayout *layout)
void insertRow(int row, QWidget *widget)
void insertRow(int row, QWidget *label, QLayout *field)
void insertRow(int row, const QString &labelText, QLayout *field)
void insertRow(int row, const QString &labelText, QWidget *field)
(since 6.4) bool isRowVisible(int row) const
(since 6.4) bool isRowVisible(QLayout *layout) const
(since 6.4) bool isRowVisible(QWidget *widget) const
QLayoutItem *itemAt(int row, QFormLayout::ItemRole role) const
Qt::Alignment labelAlignment() const
QWidget *labelForField(QWidget *field) const
QWidget *labelForField(QLayout *field) const
void removeRow(int row)
void removeRow(QLayout *layout)
void removeRow(QWidget *widget)
int rowCount() const
QFormLayout::RowWrapPolicy rowWrapPolicy() const
void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy)
void setFormAlignment(Qt::Alignment alignment)
void setHorizontalSpacing(int spacing)
void setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)
void setLabelAlignment(Qt::Alignment alignment)
void setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)
(since 6.4) void setRowVisible(int row, bool on)
(since 6.4) void setRowVisible(QLayout *layout, bool on)
(since 6.4) void setRowVisible(QWidget *widget, bool on)
void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy)
void setVerticalSpacing(int spacing)
void setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)
QFormLayout::TakeRowResult takeRow(int row)
QFormLayout::TakeRowResult takeRow(QLayout *layout)
QFormLayout::TakeRowResult takeRow(QWidget *widget)
int verticalSpacing() 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 width) const override
virtual void invalidate() override
virtual QLayoutItem *itemAt(int index) 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

Description détaillée

QFormLayout est une classe de disposition pratique qui présente ses enfants sous la forme de deux colonnes. La colonne de gauche est constituée d'étiquettes et la colonne de droite est constituée de widgets de "champs" (éditeurs de lignes, boîtes de dialogue, etc.).

Traditionnellement, de telles dispositions de formulaires à deux colonnes étaient réalisées à l'aide de QGridLayout. QFormLayout est une alternative de plus haut niveau qui offre les avantages suivants :

  • Respect des directives relatives à l'aspect et à la convivialité des différentes plateformes.

    Par exemple, les directives macOS Aqua et KDE spécifient que les étiquettes doivent être alignées à droite, alors que les applications Windows et GNOME utilisent normalement l'alignement à gauche.

  • Prise en charge de l'habillage des longues lignes.

    Pour les appareils dotés d'un petit écran, QFormLayout peut être défini sur wrap long rows, voire sur wrap all rows.

  • API pratique pour la création de paires étiquette-champ.

    La surcharge addRow() qui prend un QString et un QWidget * crée un QLabel dans les coulisses et configure automatiquement son compagnon. Nous pouvons alors écrire un code comme celui-ci :

    QFormLayout *formLayout = new QFormLayout(this);
    formLayout->addRow(tr("&Name:"), nameLineEdit);
    formLayout->addRow(tr("&Email:"), emailLineEdit);
    formLayout->addRow(tr("&Age:"), ageSpinBox);

    Comparez cela avec le code suivant, écrit à l'aide de QGridLayout:

    QGridLayout *gridLayout = new QGridLayout(this);
    
    nameLabel = new QLabel(tr("&Name:"));
    nameLabel->setBuddy(nameLineEdit);
    
    emailLabel = new QLabel(tr("&Name:"));
    emailLabel->setBuddy(emailLineEdit);
    
    ageLabel = new QLabel(tr("&Name:"));
    ageLabel->setBuddy(ageSpinBox);
    
    gridLayout->addWidget(nameLabel, 0, 0);
    gridLayout->addWidget(nameLineEdit, 0, 1);
    gridLayout->addWidget(emailLabel, 1, 0);
    gridLayout->addWidget(emailLineEdit, 1, 1);
    gridLayout->addWidget(ageLabel, 2, 0);
    gridLayout->addWidget(ageSpinBox, 2, 1);

Le tableau ci-dessous montre l'apparence par défaut dans différents styles.

QCommonStyle styles dérivés (sauf QPlastiqueStyle)QMacStyleQPlastiqueStyleStyles Qt Extended
Mise en page du formulaire dans le style traditionnel du bureauMise en page du formulaire dans le style macOS AquaMise en page du formulaire dans le style KDE PlastiqueMise en page du formulaire dans le style Qt Extended
Style traditionnel utilisé pour Windows, GNOME et les versions antérieures de KDE. Les étiquettes sont alignées à gauche et les champs en expansion s'agrandissent pour remplir l'espace disponible. (Cela correspond normalement à ce que l'on obtiendrait en utilisant une page QGridLayout à deux colonnes).Style basé sur les directives macOS Aqua. Les étiquettes sont alignées à droite, les champs ne s'agrandissent pas au-delà de leur taille et le formulaire est centré horizontalement.Style recommandé pour les applications KDE. Similaire à MacStyle, sauf que le formulaire est aligné à gauche et que tous les champs s'agrandissent pour remplir l'espace disponible.Style par défaut pour les styles Qt Extended. Les étiquettes sont alignées à droite, les champs en expansion s'agrandissent pour remplir l'espace disponible et l'habillage des lignes est activé pour les longues lignes.

Les styles de formulaire peuvent également être modifiés individuellement en appelant setLabelAlignment(), setFormAlignment(), setFieldGrowthPolicy() et setRowWrapPolicy(). Par exemple, pour simuler l'apparence du formulaire de QMacStyle sur toutes les plateformes, mais avec des étiquettes alignées à gauche, vous pouvez écrire :

formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);
formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
formLayout->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop);
formLayout->setLabelAlignment(Qt::AlignLeft);

Voir aussi QGridLayout, QBoxLayout, et QStackedLayout.

Documentation sur les types de membres

enum QFormLayout::FieldGrowthPolicy

Cette énumération spécifie les différentes politiques qui peuvent être utilisées pour contrôler la manière dont les champs du formulaire se développent.

ConstanteValeurDescription
QFormLayout::FieldsStayAtSizeHint0Les champs ne s'agrandissent jamais au-delà de leur effective size hint. C'est la valeur par défaut de QMacStyle.
QFormLayout::ExpandingFieldsGrow1size policy Les champs dont l'adresse horizontale est Expanding ou MinimumExpanding s'agrandissent pour remplir l'espace disponible. Les autres champs ne dépassent pas leur indice de taille effective. Il s'agit de la politique par défaut pour Plastique.
QFormLayout::AllNonFixedFieldsGrow2Tous les champs dont la politique de taille leur permet de s'agrandir s'agrandiront pour remplir l'espace disponible. Il s'agit de la politique par défaut pour la plupart des styles.

Voir également fieldGrowthPolicy.

enum QFormLayout::ItemRole

Cette énumération spécifie les types de widgets (ou autres éléments de mise en page) qui peuvent apparaître dans une ligne.

ConstanteValeurDescription
QFormLayout::LabelRole0Un widget d'étiquette.
QFormLayout::FieldRole1Un widget de champ.
QFormLayout::SpanningRole2Un widget qui s'étend sur les colonnes d'étiquettes et de champs.

Voir également itemAt() et getItemPosition().

enum QFormLayout::RowWrapPolicy

Cette énumération spécifie les différentes politiques qui peuvent être utilisées pour contrôler la manière dont les lignes du formulaire s'enroulent.

ConstanteValeurDescription
QFormLayout::DontWrapRows0Les champs sont toujours disposés à côté de leur étiquette. Il s'agit de la politique par défaut pour tous les styles, à l'exception des styles Qt Extended.
QFormLayout::WrapLongRows1Les étiquettes disposent d'un espace horizontal suffisant pour contenir l'étiquette la plus large, le reste de l'espace étant réservé aux champs. Si la taille minimale d'une paire de champs est supérieure à l'espace disponible, le champ est placé sur la ligne suivante. Il s'agit de la politique par défaut pour les styles Qt Extended.
QFormLayout::WrapAllRows2Les champs sont toujours placés sous leur étiquette.

Voir également rowWrapPolicy.

Documentation sur les propriétés

fieldGrowthPolicy : FieldGrowthPolicy

Cette propriété définit la manière dont les champs du formulaire se développent

La valeur par défaut dépend du style du widget ou de l'application. Pour QMacStyle, la valeur par défaut est FieldsStayAtSizeHint; pour les styles dérivés de QCommonStyle (comme Plastique et Windows), la valeur par défaut est ExpandingFieldsGrow; pour les styles Qt Extended, la valeur par défaut est AllNonFixedFieldsGrow.

Si aucun des champs ne peut s'agrandir et que le formulaire est redimensionné, l'espace supplémentaire est distribué en fonction du style actuel form alignment.

Fonctions d'accès :

QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const
void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy)

Voir également formAlignment et rowWrapPolicy.

formAlignment : Qt::Alignment

Cette propriété définit l'alignement du contenu de la présentation du formulaire dans la géométrie de la présentation

La valeur par défaut dépend du style du widget ou de l'application. Pour QMacStyle, la valeur par défaut est Qt::AlignHCenter | Qt::AlignTop; pour les autres styles, la valeur par défaut est Qt::AlignLeft | Qt::AlignTop.

Fonctions d'accès :

Qt::Alignment formAlignment() const
void setFormAlignment(Qt::Alignment alignment)

Voir également labelAlignment et rowWrapPolicy.

horizontalSpacing : int

Cette propriété définit l'espacement entre les widgets disposés côte à côte

Par défaut, 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 aussi verticalSpacing, QStyle::pixelMetric() et PM_LayoutHorizontalSpacing.

labelAlignment : Qt::Alignment

Cette propriété définit l'alignement horizontal des étiquettes

La valeur par défaut dépend du style du widget ou de l'application. Pour les styles dérivés de QCommonStyle, à l'exception de QPlastiqueStyle, la valeur par défaut est Qt::AlignLeft; pour les autres styles, la valeur par défaut est Qt::AlignRight.

Fonctions d'accès :

Qt::Alignment labelAlignment() const
void setLabelAlignment(Qt::Alignment alignment)

Voir également formAlignment.

rowWrapPolicy : RowWrapPolicy

Cette propriété définit la manière dont les lignes du formulaire s'enroulent

La valeur par défaut dépend du style du widget ou de l'application. Pour les styles Qt Extended, la valeur par défaut est WrapLongRows; pour les autres styles, la valeur par défaut est DontWrapRows.

Si vous souhaitez afficher chaque étiquette au-dessus du champ qui lui est associé (plutôt qu'à côté), définissez cette propriété à WrapAllRows.

Fonctions d'accès :

QFormLayout::RowWrapPolicy rowWrapPolicy() const
void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy)

Voir aussi fieldGrowthPolicy.

verticalSpacing : int

Cette propriété définit l'espacement entre les widgets disposés verticalement

Par défaut, si aucune valeur n'est explicitement définie, l'espacement vertical de la mise en page est hérité de la mise en page 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] QFormLayout::QFormLayout(QWidget *parent = nullptr)

Construit une nouvelle présentation de formulaire avec le widget parent donné.

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().

Voir aussi QWidget::setLayout().

[virtual noexcept] QFormLayout::~QFormLayout()

Détruit la mise en page du formulaire.

[override virtual] void QFormLayout::addItem(QLayoutItem *item)

Réimplémente : QLayout::addItem(QLayoutItem *item).

void QFormLayout::addRow(QWidget *label, QWidget *field)

Ajoute une nouvelle ligne au bas de cette présentation de formulaire, avec les données label et field.

Voir aussi insertRow().

void QFormLayout::addRow(QLayout *layout)

Ajoute l'adresse layout spécifiée à la fin de la mise en page de ce formulaire. Le site layout s'étend sur les deux colonnes.

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

void QFormLayout::addRow(QWidget *widget)

Ajoute l'adresse widget spécifiée à la fin de la mise en page de ce formulaire. Le site widget s'étend sur les deux colonnes.

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

void QFormLayout::addRow(QWidget *label, QLayout *field)

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

void QFormLayout::addRow(const QString &labelText, QLayout *field)

Cette surcharge crée automatiquement un QLabel dans les coulisses avec labelText comme texte.

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

void QFormLayout::addRow(const QString &labelText, QWidget *field)

Cette surcharge crée automatiquement un QLabel en coulisses avec labelText comme texte. Le field est défini comme le nouveau buddy de QLabel.

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

[override virtual] int QFormLayout::count() const

Réimplémente : QLayout::count() const.

[override virtual] Qt::Orientations QFormLayout::expandingDirections() const

Réimplémente : QLayout::expandingDirections() const.

void QFormLayout::getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

Récupère la ligne et le rôle (colonne) de l'élément à l'adresse spécifiée index. Si index est hors limites, *rowPtr est mis à -1 ; sinon la ligne est stockée dans *rowPtr et le rôle est stocké dans *rolePtr.

Voir aussi itemAt(), count(), getLayoutPosition() et getWidgetPosition().

void QFormLayout::getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

Récupère la ligne et le rôle (colonne) de l'enfant spécifié layout. Si layout ne figure pas dans la présentation du formulaire, *rowPtr prend la valeur -1 ; sinon, la ligne est stockée dans *rowPtr et le rôle est stocké dans *rolePtr.

void QFormLayout::getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

Récupère la ligne et le rôle (colonne) de l'adresse widget spécifiée dans la mise en page. Si widget n'est pas dans la disposition, *rowPtr est mis à -1 ; sinon la ligne est stockée dans *rowPtr et le rôle est stocké dans *rolePtr.

Voir aussi getItemPosition() et itemAt().

[override virtual] bool QFormLayout::hasHeightForWidth() const

Réimplémente : QLayoutItem::hasHeightForWidth() const.

[override virtual] int QFormLayout::heightForWidth(int width) const

Réimplémente : QLayoutItem::heightForWidth(int) const.

void QFormLayout::insertRow(int row, QWidget *label, QWidget *field)

Insère une nouvelle ligne à la position row dans cette présentation de formulaire, avec les données label et field. Si row est hors limites, la nouvelle ligne est ajoutée à la fin.

Voir aussi addRow().

void QFormLayout::insertRow(int row, QLayout *layout)

Insère l'adresse layout spécifiée à la position row dans cette mise en page de formulaire. Le layout s'étend sur les deux colonnes. Si row est hors limites, le widget est ajouté à la fin.

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

void QFormLayout::insertRow(int row, QWidget *widget)

Insère l'adresse widget spécifiée à la position row dans cette mise en page de formulaire. Le widget s'étend sur les deux colonnes. Si row est hors limites, le widget est ajouté à la fin.

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

void QFormLayout::insertRow(int row, QWidget *label, QLayout *field)

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

void QFormLayout::insertRow(int row, const QString &labelText, QLayout *field)

Cette surcharge crée automatiquement un QLabel dans les coulisses avec labelText comme texte.

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

void QFormLayout::insertRow(int row, const QString &labelText, QWidget *field)

Cette surcharge crée automatiquement un QLabel en coulisses avec labelText comme texte. Le field est défini comme le nouveau buddy de QLabel.

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

[override virtual] void QFormLayout::invalidate()

Réimplémente : QLayout::invalidate().

[since 6.4] bool QFormLayout::isRowVisible(int row) const

Retourne vrai si certains éléments de la ligne row sont visibles, sinon retourne faux.

Cette fonction a été introduite dans Qt 6.4.

[since 6.4] bool QFormLayout::isRowVisible(QLayout *layout) const

Renvoie un message vrai si certains éléments de la ligne correspondant à layout sont visibles, sinon il renvoie un message faux.

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

Cette fonction a été introduite dans Qt 6.4.

[since 6.4] bool QFormLayout::isRowVisible(QWidget *widget) const

Renvoie un message vrai si certains éléments de la ligne correspondant à widget sont visibles, sinon il renvoie un message faux.

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

Cette fonction a été introduite dans Qt 6.4.

[override virtual] QLayoutItem *QFormLayout::itemAt(int index) const

Réimplémente : QLayout::itemAt(int index) const.

QLayoutItem *QFormLayout::itemAt(int row, QFormLayout::ItemRole role) const

Renvoie l'élément de mise en page dans l'adresse row donnée avec l'adresse role (colonne) spécifiée. Renvoie nullptr s'il n'existe pas d'élément de ce type.

Voir aussi QLayout::itemAt() et setItem().

QWidget *QFormLayout::labelForField(QWidget *field) const

Renvoie l'étiquette associée à l'adresse field.

Voir aussi itemAt().

QWidget *QFormLayout::labelForField(QLayout *field) const

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

[override virtual] QSize QFormLayout::minimumSize() const

Réimplémente : QLayout::minimumSize() const.

void QFormLayout::removeRow(int row)

Supprime la ligne row de cette présentation de formulaire.

row doit être non négatif et inférieur à rowCount().

Après cet appel, rowCount() est décrémenté de un. Tous les widgets et les dispositions imbriquées qui occupaient cette ligne sont supprimés. Cela inclut le(s) widget(s) de champ et l'étiquette, le cas échéant. Toutes les lignes suivantes sont décalées d'une ligne vers le haut et l'espace vertical libéré est redistribué entre les lignes restantes.

Vous pouvez utiliser cette fonction pour annuler un précédent addRow() ou insertRow() :

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
flay->removeRow(2); // le == nullptr at this point

Si vous souhaitez supprimer la ligne de la mise en page sans supprimer les widgets, utilisez plutôt takeRow().

Voir également takeRow().

void QFormLayout::removeRow(QLayout *layout)

Supprime la ligne correspondant à layout de cette présentation de formulaire.

Après cet appel, rowCount() est décrémenté de un. Tous les widgets et les dispositions imbriquées qui occupaient cette ligne sont supprimés. Cela inclut le(s) widget(s) de champ et l'étiquette, le cas échéant. Toutes les lignes suivantes sont décalées d'une ligne vers le haut et l'espace vertical libéré est redistribué entre les lignes restantes.

Vous pouvez utiliser cette fonction pour annuler un précédent addRow() ou insertRow() :

QFormLayout *flay = ...;
QPointer<QVBoxLayout> vbl = new QVBoxLayout;
flay->insertRow(2, "User:", vbl);
// later:
flay->removeRow(layout); // vbl == nullptr at this point

Si vous souhaitez supprimer la ligne de la mise en page du formulaire sans supprimer la mise en page insérée, utilisez plutôt takeRow().

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

Voir aussi takeRow().

void QFormLayout::removeRow(QWidget *widget)

Supprime la ligne correspondant à widget de cette présentation de formulaire.

Après cet appel, rowCount() est décrémenté de un. Tous les widgets et les dispositions imbriquées qui occupaient cette ligne sont supprimés. Cela inclut le(s) widget(s) de champ et l'étiquette, le cas échéant. Toutes les lignes suivantes sont décalées d'une ligne vers le haut et l'espace vertical libéré est redistribué entre les lignes restantes.

Vous pouvez utiliser cette fonction pour annuler un précédent addRow() ou insertRow() :

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
flay->removeRow(le); // le == nullptr at this point

Si vous souhaitez supprimer la ligne de la mise en page sans supprimer les widgets, utilisez plutôt takeRow().

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

Voir également takeRow().

int QFormLayout::rowCount() const

Renvoie le nombre de lignes du formulaire.

Voir aussi QLayout::count().

[override virtual] void QFormLayout::setGeometry(const QRect &rect)

Réimplémente : QLayout::setGeometry(const QRect &r).

void QFormLayout::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)

Définit l'élément dans la cellule row pour la cellule role à item, en étendant la mise en page avec des lignes vides si nécessaire.

Si la cellule est déjà occupée, le item n'est pas inséré et un message d'erreur est envoyé à la console. Le item s'étend sur les deux colonnes.

Attention : N'utilisez pas cette fonction pour ajouter des dispositions enfant ou des éléments de widget enfant. Utilisez plutôt setLayout() ou setWidget().

Voir aussi setLayout().

void QFormLayout::setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)

Définit la disposition secondaire dans la cellule row pour la cellule role à layout, en étendant la disposition du formulaire avec des lignes vides si nécessaire.

Si la cellule est déjà occupée, layout n'est pas inséré et un message d'erreur est envoyé à la console.

Remarque : pour la plupart des applications, addRow() ou insertRow() doit être utilisé à la place de setLayout().

Voir également setWidget().

[since 6.4] void QFormLayout::setRowVisible(int row, bool on)

Affiche la ligne row si on est vrai, sinon cache la ligne.

row doit être non négatif et inférieur à rowCount().

Cette fonction a été introduite dans Qt 6.4.

Voir aussi isRowVisible(), removeRow(), et takeRow().

[since 6.4] void QFormLayout::setRowVisible(QLayout *layout, bool on)

Affiche la ligne correspondant à layout si on est vrai, sinon cache la ligne.

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

Cette fonction a été introduite dans Qt 6.4.

Voir aussi removeRow() et takeRow().

[since 6.4] void QFormLayout::setRowVisible(QWidget *widget, bool on)

Affiche la ligne correspondant à widget si on est vrai, sinon cache la ligne.

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

Cette fonction a été introduite dans Qt 6.4.

Voir aussi removeRow() et takeRow().

[override virtual] void QFormLayout::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().

void QFormLayout::setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)

Définit le widget dans la cellule row pour la cellule role à widget, en étendant la disposition avec des lignes vides si nécessaire.

Si la cellule est déjà occupée, le widget n'est pas inséré et un message d'erreur est envoyé à la console.

Remarque : pour la plupart des applications, addRow() ou insertRow() doit être utilisé à la place de setWidget().

Voir également setLayout().

[override virtual] QSize QFormLayout::sizeHint() const

Réimplémente : QLayoutItem::sizeHint() const.

[override virtual] int QFormLayout::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 *QFormLayout::takeAt(int index)

Réimplémente : QLayout::takeAt(int index).

QFormLayout::TakeRowResult QFormLayout::takeRow(int row)

Supprime l'adresse row spécifiée de cette présentation de formulaire.

row doit être non négatif et inférieur à rowCount().

Remarque : cette fonction ne supprime rien.

Après cet appel, rowCount() est décrémenté de un. Toutes les lignes suivantes sont décalées d'une ligne vers le haut et l'espace vertical libéré est redistribué entre les lignes restantes.

Vous pouvez utiliser cette fonction pour annuler un appel précédent à addRow() ou insertRow() :

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(2);

Si vous souhaitez supprimer la ligne de la mise en page et supprimer les widgets, utilisez plutôt removeRow().

Retourne une structure contenant à la fois le widget et les éléments de mise en page de l'étiquette correspondante

Voir également removeRow().

QFormLayout::TakeRowResult QFormLayout::takeRow(QLayout *layout)

Supprime le site layout spécifié de cette présentation de formulaire.

Remarque : cette fonction ne supprime rien.

Après cet appel, rowCount() est décrémenté de un. Toutes les lignes suivantes sont décalées d'une ligne vers le haut et l'espace vertical libéré est redistribué entre les lignes restantes.

QFormLayout *flay = ...;
QPointer<QVBoxLayout> vbl = new QVBoxLayout;
flay->insertRow(2, "User:", vbl);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(widget);

Si vous souhaitez supprimer la ligne de la présentation du formulaire et supprimer la présentation insérée, utilisez plutôt removeRow().

Retourne une structure contenant à la fois le widget et les éléments de mise en page de l'étiquette correspondante

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

Voir également removeRow().

QFormLayout::TakeRowResult QFormLayout::takeRow(QWidget *widget)

Supprime le site widget spécifié de cette présentation de formulaire.

Remarque : cette fonction ne supprime rien.

Après cet appel, rowCount() est décrémenté de un. Toutes les lignes suivantes sont décalées d'une ligne vers le haut et l'espace vertical libéré est redistribué entre les lignes restantes.

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(widget);

Si vous souhaitez supprimer la ligne de la mise en page et supprimer les widgets, utilisez plutôt removeRow().

Retourne une structure contenant à la fois le widget et les éléments de mise en page de l'étiquette correspondante.

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

Voir également removeRow().

© 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.