Auf dieser Seite

QFormLayout Class

Die Klasse „QFormLayout“ verwaltet Formulare aus Eingabe-Widgets und den dazugehörigen Beschriftungen. Mehr...

Überschrift: #include <QFormLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QLayout

Öffentliche Typen

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

Eigenschaften

Öffentliche Funktionen

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

Neu implementierte öffentliche Funktionen

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

Ausführliche Beschreibung

QFormLayout ist eine Komfort-Layoutklasse, die ihre untergeordneten Elemente in einem zweispaltigen Formular anordnet. Die linke Spalte besteht aus Beschriftungen, die rechte Spalte aus „Feld“-Widgets (Zeileneditoren, Drehfelder usw.).

Traditionell wurden solche zweispaltigen Formularlayouts mit ` QGridLayout` realisiert. `QFormLayout` ist eine übergeordnete Alternative, die folgende Vorteile bietet:

  • Einhaltung der Look-and-Feel-Richtlinien der verschiedenen Plattformen.

    Beispielsweise legen die Richtlinien für macOS Aqua und KDE fest, dass Beschriftungen rechtsbündig ausgerichtet werden sollten, während Windows- und GNOME-Anwendungen normalerweise eine linksbündige Ausrichtung verwenden.

  • Unterstützung für den Zeilenumbruch bei langen Zeilen.

    Für Geräte mit kleinen Displays kann QFormLayout auf „ wrap long rows “ oder sogar auf „ wrap all rows “ eingestellt werden.

  • Praktische API zum Erstellen von Beschriftungs-Feld-Paaren.

    Die Überladung von ` addRow()` (die ein ` QString ` und ein ` QWidget *` entgegennimmt) erstellt im Hintergrund ein ` QLabel ` und richtet dessen „Buddy“ automatisch ein. Wir können dann Code wie diesen schreiben:

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

    Vergleichen Sie dies mit dem folgenden Code, der unter Verwendung von ` QGridLayout` geschrieben wurde:

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

Die folgende Tabelle zeigt das Standard-Erscheinungsbild in verschiedenen Stilen.

QCommonStyle abgeleitete Stile (außer QPlastiqueStyle)QMacStyleQPlastiqueStyleQt-Erweiterte Stile
Formularlayout im klassischen Desktop-StilFormularlayout im macOS-Aqua-StilFormularlayout im KDE-Plastique-StilFormularlayout im Qt-Extended-Stil
Traditioneller Stil, der für Windows, GNOME und frühere Versionen von KDE verwendet wird. Beschriftungen sind linksbündig ausgerichtet, und erweiterbare Felder füllen den verfügbaren Platz aus. (Dies entspricht normalerweise dem Ergebnis, das wir bei Verwendung eines zweispaltigen ` QGridLayout` erhalten würden.)Stil basierend auf den macOS-Aqua-Richtlinien. Beschriftungen sind rechtsbündig, die Felder wachsen nicht über ihre Größenangabe hinaus und das Formular ist horizontal zentriert.Empfohlener Stil für KDE-Anwendungen. Ähnlich wie „MacStyle“, mit dem Unterschied, dass das Formular linksbündig ausgerichtet ist und alle Felder so groß werden, dass sie den verfügbaren Platz ausfüllen.Standardstil für Qt-Extended-Stile. Beschriftungen sind rechtsbündig, expandierende Felder dehnen sich aus, um den verfügbaren Platz auszufüllen, und bei langen Zeilen ist der Zeilenumbruch aktiviert.

Die Formularstile können auch einzeln überschrieben werden, indem die Funktionen ` setLabelAlignment()`, ` setFormAlignment()`, ` setFieldGrowthPolicy()` und ` setRowWrapPolicy()` aufgerufen werden. Um beispielsweise das Erscheinungsbild des Formularlayouts von `QMacStyle` auf allen Plattformen zu simulieren, jedoch mit linksbündigen Beschriftungen, könnten Sie Folgendes schreiben:

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

Siehe auch QGridLayout, QBoxLayout und QStackedLayout.

Dokumentation zu Mitgliedstypen

enum QFormLayout::FieldGrowthPolicy

Diese Aufzählung legt die verschiedenen Richtlinien fest, mit denen gesteuert werden kann, wie die Felder des Formulars vergrößert werden.

KonstanteWertBeschreibung
QFormLayout::FieldsStayAtSizeHint0Die Felder werden niemals über ihre Breite effective size hint hinaus vergrößert. Dies ist die Standardeinstellung für QMacStyle.
QFormLayout::ExpandingFieldsGrow1Felder mit einem horizontalen Größenhinweis ( size policy ) von „ Expanding “ oder „ MinimumExpanding “ werden so vergrößert, dass sie den verfügbaren Platz ausfüllen. Die übrigen Felder werden nicht über ihren effektiven Größenhinweis hinaus vergrößert. Dies ist die Standardrichtlinie für „Plastique“.
QFormLayout::AllNonFixedFieldsGrow2Alle Felder mit einer Größenrichtlinie, die eine Vergrößerung zulässt, werden so vergrößert, dass sie den verfügbaren Platz ausfüllen. Dies ist die Standardrichtlinie für die meisten Stile.

Siehe auch fieldGrowthPolicy.

enum QFormLayout::ItemRole

Diese Enumeration legt fest, welche Arten von Widgets (oder anderen Layout-Elementen) in einer Zeile erscheinen dürfen.

KonstanteWertBeschreibung
QFormLayout::LabelRole0Ein Beschriftungs-Widget.
QFormLayout::FieldRole1Ein Feld-Widget.
QFormLayout::SpanningRole2Ein Widget, das sich über Beschriftungs- und Feldspalten erstreckt.

Siehe auch itemAt() und getItemPosition().

enum QFormLayout::RowWrapPolicy

Diese Aufzählung legt die verschiedenen Richtlinien fest, mit denen gesteuert werden kann, wie die Zeilen des Formulars umgebrochen werden.

KonstanteWertBeschreibung
QFormLayout::DontWrapRows0Felder werden immer neben ihrer Beschriftung angeordnet. Dies ist die Standardregel für alle Stile mit Ausnahme der Qt-Extended-Stile.
QFormLayout::WrapLongRows1Den Beschriftungen wird genügend horizontaler Platz zugewiesen, um auch die breiteste Beschriftung unterzubringen; der verbleibende Platz wird den Feldern zugewiesen. Ist die Mindestbreite eines Feldpaares größer als der verfügbare Platz, wird das Feld in die nächste Zeile umgebrochen. Dies ist die Standardregel für Qt-Extended-Stile.
QFormLayout::WrapAllRows2Felder werden immer unterhalb ihrer Beschriftung angeordnet.

Siehe auch „ rowWrapPolicy “.

Eigenschaftsdokumentation

fieldGrowthPolicy : FieldGrowthPolicy

Diese Eigenschaft legt fest, wie die Felder des Formulars vergrößert werden

Der Standardwert hängt vom Widget oder vom Anwendungsstil ab. Für „QMacStyle“ ist der Standardwert „ FieldsStayAtSizeHint “; für von „ QCommonStyle “ abgeleitete Stile (wie „Plastique“ und „Windows“) ist der Standardwert „ ExpandingFieldsGrow “; für „Qt Extended“-Stile ist der Standardwert „ AllNonFixedFieldsGrow “.

Wenn keines der Felder vergrößert werden kann und die Größe des Formulars geändert wird, wird der zusätzliche Platz entsprechend dem aktuellen Wert von ` form alignment` verteilt.

Zugriffsfunktionen:

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

Siehe auch „ formAlignment “ und „ rowWrapPolicy “.

formAlignment : Qt::Alignment

Diese Eigenschaft legt die Ausrichtung der Inhalte des Formularlayouts innerhalb der Layoutgeometrie fest

Der Standardwert hängt vom Widget- oder Anwendungsstil ab. Für QMacStyle lautet der Standardwert „ Qt::AlignHCenter “ | „ Qt::AlignTop “; für die anderen Stile lautet der Standardwert „ Qt::AlignLeft “ | „ Qt::AlignTop “.

Zugriffsfunktionen:

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

Siehe auch „ labelAlignment “ und „ rowWrapPolicy “.

horizontalSpacing : int

Diese Eigenschaft legt den Abstand zwischen nebeneinander angeordneten Widgets fest

Standardmäßig wird, sofern kein Wert explizit festgelegt ist, der horizontale Abstand des Layouts vom übergeordneten Layout oder aus den Stileinstellungen des übergeordneten Widgets übernommen.

Zugriffsfunktionen:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

Siehe auch „ verticalSpacing“ , „ QStyle::pixelMetric()“ und „ PM_LayoutHorizontalSpacing “.

labelAlignment : Qt::Alignment

Diese Eigenschaft legt die horizontale Ausrichtung der Beschriftungen fest

Der Standardwert hängt vom Widget oder vom Anwendungsstil ab. Bei von „ QCommonStyle “ abgeleiteten Stilen – mit Ausnahme von „QPlastiqueStyle“ – lautet der Standardwert „ Qt::AlignLeft “; bei den anderen Stilen lautet der Standardwert „ Qt::AlignRight “.

Zugriffsfunktionen:

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

Siehe auch „ formAlignment “.

rowWrapPolicy : RowWrapPolicy

Diese Eigenschaft legt fest, wie die Zeilen des Formulars umgebrochen werden

Der Standardwert hängt vom Widget oder vom Anwendungsstil ab. Bei Qt-Extended-Stilen ist der Standardwert „ WrapLongRows “; bei den anderen Stilen ist der Standardwert „ DontWrapRows “.

Wenn Sie jede Beschriftung über dem zugehörigen Feld (statt daneben) anzeigen möchten, setzen Sie diese Eigenschaft auf „ WrapAllRows “.

Zugriffsfunktionen:

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

Siehe auch „ fieldGrowthPolicy “.

verticalSpacing : int

Diese Eigenschaft legt den Abstand zwischen vertikal angeordneten Widgets fest

Standardmäßig wird, sofern kein Wert explizit festgelegt ist, der vertikale Abstand des Layouts vom übergeordneten Layout oder aus den Stileinstellungen des übergeordneten Widgets übernommen.

Zugriffsfunktionen:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

Siehe auch ` horizontalSpacing`, ` QStyle::pixelMetric()` und ` PM_LayoutHorizontalSpacing`.

Dokumentation zu den Mitgliedsfunktionen

[explicit] QFormLayout::QFormLayout(QWidget *parent = nullptr)

Erstellt ein neues Formularlayout mit dem angegebenen Widget „ parent “.

Das Layout wird direkt als oberstes Layout für „ parent “ festgelegt. Für ein Widget kann es nur ein oberstes Layout geben. Es wird von „ QWidget::layout()“ zurückgegeben.

Siehe auch „ QWidget::setLayout()“.

[virtual noexcept] QFormLayout::~QFormLayout()

Zerstört das Formularlayout.

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

Implementiert erneut: ` QLayout::addItem` (`QLayoutItem *item`).

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

Fügt am Ende dieses Formularlayouts eine neue Zeile mit den angegebenen Werten „ label “ und „ field “ hinzu.

Siehe auch insertRow().

void QFormLayout::addRow(QLayout *layout)

Fügt das angegebene „ layout “ am Ende dieses Formularlayouts ein. Das „ layout “ erstreckt sich über beide Spalten.

Dies ist eine überladene Funktion.

void QFormLayout::addRow(QWidget *widget)

Fügt das angegebene „ widget “ am Ende dieses Formularlayouts ein. Das „ widget “ erstreckt sich über beide Spalten.

Dies ist eine überladene Funktion.

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

Dies ist eine überladene Funktion.

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

Diese Überladung erstellt im Hintergrund automatisch einen „ QLabel “ mit dem Text „ labelText “.

Dies ist eine überladene Funktion.

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

Diese Überladung erstellt im Hintergrund automatisch eine „ QLabel “ mit dem Text „ labelText “. Die „ field “ wird als „ buddy “ der neuen „ QLabel “ festgelegt.

Dies ist eine überladene Funktion.

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

Implementiert erneut: ` QLayout::count()` const.

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

Implementiert erneut: ` QLayout::expandingDirections()` const.

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

Ruft die Zeile und die Rolle (Spalte) des Elements an der angegebenen Adresse index ab. Liegt index außerhalb des zulässigen Bereichs, wird *rowPtr auf -1 gesetzt; andernfalls wird die Zeile in *rowPtr und die Rolle in *rolePtr gespeichert.

Siehe auch itemAt(), count(), getLayoutPosition() und getWidgetPosition().

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

Ruft die Zeile und die Rolle (Spalte) des angegebenen untergeordneten Elements layout ab. Befindet sich layout nicht im Formularlayout, wird *rowPtr auf -1 gesetzt; andernfalls wird die Zeile in *rowPtr und die Rolle in *rolePtr gespeichert.

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

Ruft die Zeile und die Rolle (Spalte) des angegebenen „ widget “ im Layout ab. Befindet sich „ widget “ nicht im Layout, wird „*rowPtr “ auf -1 gesetzt; andernfalls wird die Zeile in „*rowPtr “ und die Rolle in „*rolePtr “ gespeichert.

Siehe auch getItemPosition() und itemAt().

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

Implementiert neu: ` QLayoutItem::hasHeightForWidth()` const.

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

Implementiert neu: ` QLayoutItem::heightForWidth(int) const`.

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

Fügt an der Position „ row “ in diesem Formularlayout eine neue Zeile ein, mit den angegebenen Werten „ label “ und „ field “. Liegt „ row “ außerhalb des zulässigen Bereichs, wird die neue Zeile am Ende hinzugefügt.

Siehe auch addRow().

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

Fügt das angegebene Element „ layout “ an der Position „ row “ in dieses Formularlayout ein. Das Element „ layout “ erstreckt sich über beide Spalten. Liegt „ row “ außerhalb des zulässigen Bereichs, wird das Widget am Ende hinzugefügt.

Dies ist eine überladene Funktion.

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

Fügt das angegebene „ widget “ an der Position „ row “ in dieses Formularlayout ein. Das „ widget “ erstreckt sich über beide Spalten. Liegt „ row “ außerhalb des zulässigen Bereichs, wird das Widget am Ende hinzugefügt.

Dies ist eine überladene Funktion.

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

Dies ist eine überladene Funktion.

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

Diese Überladung erstellt im Hintergrund automatisch ein „ QLabel “ mit dem Text „ labelText “.

Dies ist eine überladene Funktion.

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

Diese Überladung erstellt im Hintergrund automatisch eine „ QLabel “ mit dem Text „ labelText “. Die „ field “ wird als „ buddy “ des neuen „ QLabel “ festgelegt.

Dies ist eine überladene Funktion.

[override virtual] void QFormLayout::invalidate()

Implementiert: QLayout::invalidate().

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

Gibt „true“ zurück, wenn einige Elemente in der Zeile row sichtbar sind, andernfalls „false“.

Diese Funktion wurde in Qt 6.4 eingeführt.

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

Gibt „true“ zurück, wenn einige Elemente in der Zeile, die „ layout “ entspricht, sichtbar sind; andernfalls wird „false“ zurückgegeben.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.4 eingeführt.

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

Gibt „true“ zurück, wenn einige Elemente in der Zeile, die „ widget “ entspricht, sichtbar sind; andernfalls wird „false“ zurückgegeben.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.4 eingeführt.

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

Implementiert: ` QLayout::itemAt(int index) const`.

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

Gibt das Layout-Element im angegebenen „ row “ mit der angegebenen „ role “ (Spalte) zurück. Gibt „ nullptr “ zurück, wenn kein solches Element vorhanden ist.

Siehe auch „ QLayout::itemAt()“ und „ setItem()“.

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

Gibt die Bezeichnung zurück, die dem angegebenen „ field “ zugeordnet ist.

Siehe auch itemAt().

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

Dies ist eine überladene Funktion.

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

Implementiert: ` QLayout::minimumSize()` const.

void QFormLayout::removeRow(int row)

Löscht die Zeile „ row “ aus diesem Formularlayout.

row muss nicht-negativ und kleiner als rowCount() sein.

Nach diesem Aufruf wird ` rowCount()` um eins verringert. Alle Widgets und verschachtelten Layouts, die diese Zeile belegt haben, werden gelöscht. Dazu gehören sowohl die Feld-Widgets als auch die Beschriftung, falls vorhanden. Alle nachfolgenden Zeilen werden um eine Zeile nach oben verschoben, und der frei gewordene vertikale Platz wird auf die verbleibenden Zeilen verteilt.

Sie können diese Funktion verwenden, um einen vorherigen Aufruf von ` addRow()` oder ` insertRow()` rückgängig zu machen:

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

Wenn Sie die Zeile aus dem Layout entfernen möchten, ohne die Widgets zu löschen, verwenden Sie stattdessen ` takeRow()`.

Siehe auch ` takeRow()`.

void QFormLayout::removeRow(QLayout *layout)

Löscht die Zeile, die der „ layout “ entspricht, aus diesem Formularlayout.

Nach diesem Aufruf wird „ rowCount()“ um eins verringert. Alle Widgets und verschachtelten Layouts, die diese Zeile belegt haben, werden gelöscht. Dazu gehören sowohl die Feld-Widgets als auch die Beschriftung, falls vorhanden. Alle folgenden Zeilen werden um eine Zeile nach oben verschoben, und der freigewordene vertikale Platz wird auf die verbleibenden Zeilen neu verteilt.

Sie können diese Funktion verwenden, um einen vorherigen Aufruf von ` addRow()` oder ` insertRow()` rückgängig zu machen:

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

Wenn Sie die Zeile aus dem Formularlayout entfernen möchten, ohne das eingefügte Layout zu löschen, verwenden Sie stattdessen ` takeRow()`.

Dies ist eine überladene Funktion.

Siehe auch ` takeRow()`.

void QFormLayout::removeRow(QWidget *widget)

Löscht die Zeile, die der „ widget “ entspricht, aus diesem Formularlayout.

Nach diesem Aufruf wird „ rowCount()“ um eins verringert. Alle Widgets und verschachtelten Layouts, die diese Zeile belegt haben, werden gelöscht. Dazu gehören sowohl die Feld-Widgets als auch die Beschriftung, falls vorhanden. Alle nachfolgenden Zeilen werden um eine Zeile nach oben verschoben, und der frei gewordene vertikale Platz wird auf die verbleibenden Zeilen verteilt.

Sie können diese Funktion verwenden, um einen vorherigen Aufruf von „ addRow()“ oder „ insertRow()“ rückgängig zu machen:

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

Wenn Sie die Zeile aus dem Layout entfernen möchten, ohne die Widgets zu löschen, verwenden Sie stattdessen ` takeRow()`.

Dies ist eine überladene Funktion.

Siehe auch ` takeRow()`.

int QFormLayout::rowCount() const

Gibt die Anzahl der Zeilen im Formular zurück.

Siehe auch ` QLayout::count()`.

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

Implementiert: QLayout::setGeometry(const QRect &r).

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

Setzt das Element im angegebenen „ row “ für das angegebene „ role “ auf „ item “ und erweitert das Layout dabei bei Bedarf um leere Zeilen.

Ist die Zelle bereits belegt, wird die „ item “ nicht eingefügt und eine Fehlermeldung an die Konsole gesendet. Das „ item “ erstreckt sich über beide Spalten.

Warnung: VerwendenSie diese Funktion nicht, um untergeordnete Layouts oder untergeordnete Widget-Elemente hinzuzufügen. Verwenden Sie stattdessen setLayout() oder setWidget().

Siehe auch ` setLayout()`.

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

Legt das Unterlayout im angegebenen „ row “ für das angegebene „ role “ auf „ layout “ fest und erweitert das Formularlayout dabei bei Bedarf um leere Zeilen.

Ist die Zelle bereits belegt, wird das ` layout ` nicht eingefügt und eine Fehlermeldung an die Konsole gesendet.

Hinweis: Für die meisten Anwendungen sollten „ addRow()“ oder „ insertRow()“ anstelle von „setLayout()“ verwendet werden.

Siehe auch ` setWidget()`.

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

Zeigt die Zeile „ row “ an, wenn „ on “ wahr ist, andernfalls wird die Zeile ausgeblendet.

row muss nicht-negativ und kleiner als ` rowCount()` sein.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch ` isRowVisible()`, ` removeRow()` und ` takeRow()`.

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

Zeigt die Zeile an, die „ layout “ entspricht, wenn „ on “ wahr ist; andernfalls wird die Zeile ausgeblendet.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch removeRow() und takeRow().

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

Zeigt die Zeile an, die „ widget “ entspricht, wenn „ on “ wahr ist; andernfalls wird die Zeile ausgeblendet.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch removeRow() und takeRow().

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

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QLayout::spacing “ neu.

Diese Funktion setzt sowohl den vertikalen als auch den horizontalen Abstand auf „ spacing “.

Siehe auch „ spacing()“, „ setVerticalSpacing()“ und „ setHorizontalSpacing()“.

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

Setzt das Widget im angegebenen „ row “ für die angegebene „ role “ auf „ widget “ und erweitert das Layout bei Bedarf um leere Zeilen.

Ist die Zelle bereits belegt, wird das ` widget ` nicht eingefügt und eine Fehlermeldung an die Konsole gesendet.

Hinweis: Für die meisten Anwendungen sollten „ addRow()“ oder „ insertRow()“ anstelle von „setWidget()“ verwendet werden.

Siehe auch ` setLayout()`.

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

Implementiert: QLayoutItem::sizeHint() const.

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

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QLayout::spacing “ neu.

Ist der vertikale Abstand gleich dem horizontalen Abstand, gibt diese Funktion diesen Wert zurück; andernfalls gibt sie -1 zurück.

Siehe auch „ setSpacing()“, „ verticalSpacing()“ und „ horizontalSpacing()“.

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

Implementiert: QLayout::takeAt(int index).

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

Entfernt das angegebene „ row “ aus diesem Formularlayout.

row muss nicht-negativ und kleiner als rowCount() sein.

Hinweis: Diese Funktion löscht nichts.

Nach diesem Aufruf wird ` rowCount()` um eins verringert. Alle nachfolgenden Zeilen werden um eine Zeile nach oben verschoben, und der frei gewordene vertikale Platz wird auf die verbleibenden Zeilen verteilt.

Sie können diese Funktion verwenden, um einen vorherigen Aufruf von ` addRow()` oder ` insertRow()` rückgängig zu machen:

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

Wenn Sie die Zeile aus dem Layout entfernen und die Widgets löschen möchten, verwenden Sie stattdessen ` removeRow()`.

Gibt eine Struktur zurück, die sowohl das Widget als auch die zugehörigen Beschriftungs-Layoutelemente enthält

Siehe auch ` removeRow()`.

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

Entfernt das angegebene „ layout “ aus diesem Formularlayout.

Hinweis: Diese Funktion löscht nichts.

Nach diesem Aufruf wird ` rowCount()` um eins verringert. Alle nachfolgenden Zeilen werden um eine Zeile nach oben verschoben, und der frei gewordene vertikale Platz wird auf die verbleibenden Zeilen verteilt.

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

Wenn Sie die Zeile aus dem Formularlayout entfernen und das eingefügte Layout löschen möchten, verwenden Sie stattdessen „ removeRow()“.

Gibt eine Struktur zurück, die sowohl das Widget als auch die zugehörigen Beschriftungs-Layoutelemente enthält

Dies ist eine überladene Funktion.

Siehe auch removeRow().

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

Entfernt das angegebene „ widget “ aus diesem Formularlayout.

Hinweis: Diese Funktion löscht nichts.

Nach diesem Aufruf wird „ rowCount()“ um eins verringert. Alle nachfolgenden Zeilen werden um eine Zeile nach oben verschoben, und der frei gewordene vertikale Platz wird auf die verbleibenden Zeilen verteilt.

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

Wenn Sie die Zeile aus dem Layout entfernen und die Widgets löschen möchten, verwenden Sie stattdessen ` removeRow()`.

Gibt eine Struktur zurück, die sowohl das Widget als auch die zugehörigen Beschriftungs-Layoutelemente enthält

Dies ist eine überladene Funktion.

Siehe auch ` 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.