QFormLayout Class
Die Klasse QFormLayout verwaltet Formulare von Eingabe-Widgets und ihre zugehörigen Beschriftungen. Mehr...
Kopfzeile: | #include <QFormLayout> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbungen: | 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 |
Reimplementierte ö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 |
Detaillierte Beschreibung
QFormLayout ist eine einfache Layoutklasse, die ihre Kinder in einem zweispaltigen Formular anordnet. Die linke Spalte besteht aus Beschriftungen und die rechte Spalte aus "Feld"-Widgets (Zeileneditoren, Spinboxen, etc.).
Traditionell wurden solche zweispaltigen Formularlayouts mit QGridLayout realisiert. QFormLayout ist eine übergeordnete Alternative, die die folgenden Vorteile bietet:
- Einhaltung der Look-and-Feel-Richtlinien der verschiedenen Plattformen.
Die macOS-Aqua- und KDE-Richtlinien legen beispielsweise fest, dass die Beschriftungen rechtsbündig sein sollten, während Windows- und GNOME-Anwendungen normalerweise linksbündig sind.
- Unterstützung für den Umbruch langer Zeilen.
Für Geräte mit kleinen Displays kann QFormLayout auf wrap long rows oder sogar auf wrap all rows gesetzt werden.
- Bequeme API für die Erstellung von Label-Feld-Paaren.
Die Überladung addRow(), die ein QString und ein QWidget * annimmt, erstellt im Hintergrund ein QLabel und richtet automatisch seinen Buddy 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 mit 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 die Standarddarstellung in verschiedenen Stilen.
QCommonStyle abgeleitete Stile (außer QPlastiqueStyle) | QMacStyle | QPlastiqueStyle | Qt Erweiterte Stile |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Traditioneller Stil, der für Windows, GNOME und frühere Versionen von KDE verwendet wird. Beschriftungen sind linksbündig, und expandierende Felder wachsen, um den verfügbaren Platz zu füllen. (Dies entspricht in der Regel dem, was wir mit einer zweispaltigen QGridLayout erhalten würden). | Der Stil basiert auf den Richtlinien von macOS Aqua. Beschriftungen sind rechts ausgerichtet, die Felder wachsen nicht über ihren Größenhinweis hinaus, und das Formular ist horizontal zentriert. | Empfohlener Stil für KDE-Anwendungen. Ähnlich wie MacStyle, außer dass das Formular linksbündig ist und alle Felder den verfügbaren Platz ausfüllen. | Standardstil für Qt Extended Stile. Beschriftungen sind rechts ausgerichtet, expandierende Felder wachsen, um den verfügbaren Platz zu füllen, und der Zeilenumbruch ist für lange Zeilen aktiviert. |
Die Formularstile können auch einzeln durch die Aufrufe setLabelAlignment(), setFormAlignment(), setFieldGrowthPolicy() und setRowWrapPolicy() überschrieben werden. Um zum Beispiel das Aussehen des Formularlayouts von QMacStyle auf allen Plattformen zu simulieren, aber mit links ausgerichteten Beschriftungen, könnten Sie 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 der Mitgliedstypen
enum QFormLayout::FieldGrowthPolicy
Diese Aufzählung gibt die verschiedenen Richtlinien an, die verwendet werden können, um die Art und Weise zu steuern, in der die Felder des Formulars wachsen.
Konstante | Wert | Beschreibung |
---|---|---|
QFormLayout::FieldsStayAtSizeHint | 0 | Die Felder wachsen nie über ihren effective size hint hinaus. Dies ist die Standardeinstellung für QMacStyle. |
QFormLayout::ExpandingFieldsGrow | 1 | Felder mit einer horizontalen size policy von Expanding oder MinimumExpanding wachsen, um den verfügbaren Platz zu füllen. Die anderen Felder wachsen nicht über ihren Hinweis auf die effektive Größe hinaus. Dies ist die Standardvorgabe für Plastique. |
QFormLayout::AllNonFixedFieldsGrow | 2 | Alle 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 Standardvorgabe für die meisten Stile. |
Siehe auch fieldGrowthPolicy.
enum QFormLayout::ItemRole
Diese Aufzählung gibt die Arten von Widgets (oder anderen Layoutelementen) an, die in einer Zeile erscheinen können.
Konstante | Wert | Beschreibung |
---|---|---|
QFormLayout::LabelRole | 0 | Ein Beschriftungs-Widget. |
QFormLayout::FieldRole | 1 | Ein Feld-Widget. |
QFormLayout::SpanningRole | 2 | Ein Widget, das sich über Beschriftungs- und Feldspalten erstreckt. |
Siehe auch itemAt() und getItemPosition().
enum QFormLayout::RowWrapPolicy
Diese Aufzählung gibt die verschiedenen Richtlinien an, die verwendet werden können, um die Art und Weise zu steuern, wie die Zeilen des Formulars umbrochen werden.
Konstante | Wert | Beschreibung |
---|---|---|
QFormLayout::DontWrapRows | 0 | Felder werden immer neben ihrer Beschriftung angeordnet. Dies ist die Standardeinstellung für alle Stile mit Ausnahme der Qt Extended Stile. |
QFormLayout::WrapLongRows | 1 | Beschriftungen erhalten so viel horizontalen Platz, dass die breiteste Beschriftung hineinpasst, und der Rest des Platzes wird für die Felder verwendet. Wenn die Mindestgröße eines Feldpaares breiter ist als der verfügbare Platz, wird das Feld in die nächste Zeile umgebrochen. Dies ist die Standardeinstellung für Qt Extended Stile. |
QFormLayout::WrapAllRows | 2 | Die Felder werden immer unterhalb ihrer Beschriftung angeordnet. |
Siehe auch rowWrapPolicy.
Dokumentation der Eigenschaft
fieldGrowthPolicy : FieldGrowthPolicy
Diese Eigenschaft bestimmt die Art und Weise, wie die Felder des Formulars wachsen.
Der Standardwert hängt vom Widget- oder Anwendungsstil ab. Für QMacStyle ist der Standardwert FieldsStayAtSizeHint; für QCommonStyle abgeleitete Stile (wie Plastique und Windows) ist der Standardwert ExpandingFieldsGrow; für Qt Extended Stile ist der Standardwert AllNonFixedFieldsGrow.
Wenn keines der Felder wachsen kann und die Größe des Formulars geändert wird, wird der zusätzliche Platz entsprechend dem aktuellen form alignment verteilt.
Zugriffsfunktionen:
QFormLayout::FieldGrowthPolicy | fieldGrowthPolicy() const |
void | setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy) |
Siehe auch formAlignment und rowWrapPolicy.
formAlignment : Qt::Alignment
Diese Eigenschaft bestimmt die Ausrichtung des Inhalts des Formularlayouts innerhalb der Geometrie des Layouts.
Der Standardwert hängt vom Widget- oder Anwendungsstil ab. Für QMacStyle ist der Standardwert Qt::AlignHCenter | Qt::AlignTop; für die anderen Stile ist 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 bestimmt den Abstand zwischen Widgets, die nebeneinander angeordnet sind.
Wenn kein Wert explizit festgelegt wird, wird der horizontale Abstand des Layouts standardmäßig vom übergeordneten Layout oder von den Stileinstellungen für das übergeordnete Widget geerbt.
Zugriffsfunktionen:
int | horizontalSpacing() const |
void | setHorizontalSpacing(int spacing) |
Siehe auch verticalSpacing, QStyle::pixelMetric(), und PM_LayoutHorizontalSpacing.
labelAlignment : Qt::Alignment
Diese Eigenschaft bestimmt die horizontale Ausrichtung der Beschriftungen
Der Standardwert hängt vom Stil des Widgets oder der Anwendung ab. Für QCommonStyle abgeleitete Stile, mit Ausnahme von QPlastiqueStyle, ist der Standardwert Qt::AlignLeft; für die anderen Stile ist der Standardwert Qt::AlignRight.
Zugriffsfunktionen:
Qt::Alignment | labelAlignment() const |
void | setLabelAlignment(Qt::Alignment alignment) |
Siehe auch formAlignment.
rowWrapPolicy : RowWrapPolicy
Diese Eigenschaft bestimmt, wie die Zeilen des Formulars umbrochen werden.
Der Standardwert hängt vom Widget- oder Anwendungsstil ab. Für Qt Extended Stile ist der Standardwert WrapLongRows; für die anderen Stile ist der Standardwert DontWrapRows.
Wenn Sie jedes Etikett ü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 bestimmt den Abstand zwischen Widgets, die vertikal angeordnet sind.
Wenn kein Wert explizit festgelegt wird, wird der vertikale Abstand des Layouts standardmäßig vom übergeordneten Layout oder von den Stileinstellungen für das übergeordnete Widget geerbt.
Zugriffsfunktionen:
int | verticalSpacing() const |
void | setVerticalSpacing(int spacing) |
Siehe auch horizontalSpacing, QStyle::pixelMetric(), und PM_LayoutHorizontalSpacing.
Dokumentation der Mitgliedsfunktionen
[explicit]
QFormLayout::QFormLayout(QWidget *parent = nullptr)
Konstruiert ein neues Formularlayout mit dem angegebenen parent widget.
Das Layout wird direkt als das Top-Level-Layout für parent gesetzt. Es kann nur ein Layout der obersten Ebene für ein Widget 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)
Reimplements: QLayout::addItem(QLayoutItem *item).
void QFormLayout::addRow(QWidget *label, QWidget *field)
Fügt eine neue Zeile am unteren Rand dieses Formularlayouts hinzu, mit der angegebenen label und field.
Siehe auch insertRow().
void QFormLayout::addRow(QLayout *layout)
Dies ist eine überladene Funktion.
Fügt die angegebene layout am Ende dieses Formularlayouts ein. Die layout erstreckt sich über beide Spalten.
void QFormLayout::addRow(QWidget *widget)
Dies ist eine überladene Funktion.
Fügt die angegebene widget am Ende dieses Formularlayouts ein. Die widget erstreckt sich über beide Spalten.
void QFormLayout::addRow(QWidget *label, QLayout *field)
Dies ist eine überladene Funktion.
void QFormLayout::addRow(const QString &labelText, QLayout *field)
Dies ist eine überladene Funktion.
Diese Überladung erstellt automatisch hinter den Kulissen eine QLabel mit labelText als Text.
void QFormLayout::addRow(const QString &labelText, QWidget *field)
Dies ist eine überladene Funktion.
Diese Überladung erstellt im Hintergrund automatisch ein QLabel mit labelText als Text. Die field wird als buddy des neuen QLabel eingestellt.
[override virtual]
int QFormLayout::count() const
Reimplements: QLayout::count() const.
[override virtual]
Qt::Orientations QFormLayout::expandingDirections() const
Reimplements: QLayout::expandingDirections() const.
void QFormLayout::getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
Ruft die Zeile und die Rolle (Spalte) des Eintrags unter der angegebenen Adresse index ab. Wenn index außerhalb der Grenzen liegt, * wirdrowPtr 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. Wenn layout nicht im Formularlayout enthalten ist, * wirdrowPtr 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 Rolle (Spalte) der angegebenen widget im Layout ab. Wenn widget nicht im Layout enthalten ist, * wirdrowPtr 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
Reimplements: QLayoutItem::hasHeightForWidth() const.
[override virtual]
int QFormLayout::heightForWidth(int width) const
Reimplements: QLayoutItem::heightForWidth(int) const.
void QFormLayout::insertRow(int row, QWidget *label, QWidget *field)
Fügt eine neue Zeile an der Position row in dieses Formularlayout ein, mit den angegebenen label und field. Wenn row außerhalb der Grenzen liegt, wird die neue Zeile am Ende hinzugefügt.
Siehe auch addRow().
void QFormLayout::insertRow(int row, QLayout *layout)
Dies ist eine überladene Funktion.
Fügt den angegebenen layout an der Position row in dieses Formularlayout ein. Die layout erstreckt sich über beide Spalten. Wenn row außerhalb der Grenzen liegt, wird das Widget am Ende eingefügt.
void QFormLayout::insertRow(int row, QWidget *widget)
Dies ist eine überladene Funktion.
Fügt den angegebenen widget an der Position row in dieses Formularlayout ein. Die widget erstreckt sich über beide Spalten. Wenn row außerhalb der Grenzen liegt, wird das Widget am Ende eingefügt.
void QFormLayout::insertRow(int row, QWidget *label, QLayout *field)
Dies ist eine überladene Funktion.
void QFormLayout::insertRow(int row, const QString &labelText, QLayout *field)
Dies ist eine überladene Funktion.
Diese Überladung erstellt automatisch hinter den Kulissen eine QLabel mit labelText als Text.
void QFormLayout::insertRow(int row, const QString &labelText, QWidget *field)
Dies ist eine überladene Funktion.
Diese Überladung erstellt im Hintergrund automatisch ein QLabel mit labelText als Text. Die field wird als buddy des neuen QLabel eingestellt.
[override virtual]
void QFormLayout::invalidate()
Reimplements: 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 wird false zurückgegeben.
Diese Funktion wurde in Qt 6.4 eingeführt.
[since 6.4]
bool QFormLayout::isRowVisible(QLayout *layout) const
Dies ist eine überladene Funktion.
Gibt true zurück, wenn einige Elemente in der Zeile, die layout entspricht, sichtbar sind, andernfalls gibt sie false zurück.
Diese Funktion wurde in Qt 6.4 eingeführt.
[since 6.4]
bool QFormLayout::isRowVisible(QWidget *widget) const
Dies ist eine überladene Funktion.
Gibt true zurück, wenn einige Elemente in der Zeile, die widget entspricht, sichtbar sind, andernfalls gibt sie false zurück.
Diese Funktion wurde in Qt 6.4 eingeführt.
[override virtual]
QLayoutItem *QFormLayout::itemAt(int index) const
Reimplements: QLayout::itemAt(int index) const.
QLayoutItem *QFormLayout::itemAt(int row, QFormLayout::ItemRole role) const
Gibt das Layoutelement im angegebenen row mit der angegebenen role (Spalte) zurück. Gibt nullptr
zurück, wenn es kein solches Element gibt.
Siehe auch QLayout::itemAt() und setItem().
QWidget *QFormLayout::labelForField(QWidget *field) const
Gibt das Label zurück, das mit dem angegebenen field verbunden ist.
Siehe auch itemAt().
QWidget *QFormLayout::labelForField(QLayout *field) const
Dies ist eine überladene Funktion.
[override virtual]
QSize QFormLayout::minimumSize() const
Reimplements: 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 dekrementiert. Alle Widgets und verschachtelten Layouts, die diese Zeile belegten, werden gelöscht. Dies gilt sowohl für das/die Feld-Widget(s) als auch für die Beschriftung, falls vorhanden. Alle folgenden Zeilen werden um eine Zeile nach oben verschoben und der freigewordene vertikale Platz wird auf die verbleibenden Zeilen umverteilt.
Sie können diese Funktion verwenden, um eine vorherige 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)
Dies ist eine überladene Funktion.
Löscht die Zeile, die layout entspricht, aus diesem Formularlayout.
Nach diesem Aufruf wird rowCount() um eins dekrementiert. Alle Widgets und verschachtelten Layouts, die diese Zeile belegten, werden gelöscht. Dazu gehören sowohl das/die Feld-Widget(s) 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 umverteilt.
Sie können diese Funktion verwenden, um eine vorherige 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().
Siehe auch takeRow().
void QFormLayout::removeRow(QWidget *widget)
Dies ist eine überladene Funktion.
Löscht die Zeile, die widget entspricht, aus diesem Formularlayout.
Nach diesem Aufruf wird rowCount() um eins dekrementiert. Alle Widgets und verschachtelten Layouts, die diese Zeile belegten, werden gelöscht. Dazu gehören sowohl das/die Feld-Widget(s) 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 umverteilt.
Sie können diese Funktion verwenden, um eine vorherige 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().
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)
Reimplements: QLayout::setGeometry(const QRect &r).
void QFormLayout::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)
Setzt das Element in der angegebenen row für die angegebene role auf item und erweitert das Layout gegebenenfalls um leere Zeilen.
Wenn die Zelle bereits belegt ist, wird item nicht eingefügt und eine Fehlermeldung wird an die Konsole gesendet. Die item erstreckt sich über beide Spalten.
Warnung: Verwenden Sie diese Funktion nicht, um untergeordnete Layouts oder untergeordnete Widgetelemente hinzuzufügen. Verwenden Sie stattdessen setLayout() oder setWidget().
Siehe auch setLayout().
void QFormLayout::setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)
Setzt das Unterlayout im angegebenen row für das angegebene role auf layout und erweitert das Formularlayout gegebenenfalls um leere Zeilen.
Wenn die Zelle bereits belegt ist, wird layout nicht eingefügt und eine Fehlermeldung wird an die Konsole gesendet.
Hinweis: Für die meisten Anwendungen sollte 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, ansonsten 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)
Dies ist eine überladene Funktion.
Zeigt die Zeile an, die layout entspricht, wenn on wahr ist, andernfalls wird die Zeile ausgeblendet.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch removeRow() und takeRow().
[since 6.4]
void QFormLayout::setRowVisible(QWidget *widget, bool on)
Dies ist eine überladene Funktion.
Zeigt die Zeile an, die widget entspricht, wenn on wahr ist, andernfalls verbirgt sie die Zeile.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch removeRow() und takeRow().
[override virtual]
void QFormLayout::setSpacing(int spacing)
Reimplementiert eine Zugriffsfunktion für die Eigenschaft: QLayout::spacing.
Diese Funktion setzt sowohl die vertikalen als auch die horizontalen Abstände auf spacing.
Siehe auch spacing(), setVerticalSpacing(), und setHorizontalSpacing().
void QFormLayout::setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)
Setzt das Widget in der angegebenen row für die angegebene role auf widget und erweitert das Layout ggf. um leere Zeilen.
Wenn die Zelle bereits belegt ist, wird widget nicht eingefügt und eine Fehlermeldung wird an die Konsole gesendet.
Hinweis: Für die meisten Anwendungen sollte addRow() oder insertRow() anstelle von setWidget() verwendet werden.
Siehe auch setLayout().
[override virtual]
QSize QFormLayout::sizeHint() const
Reimplements: QLayoutItem::sizeHint() const.
[override virtual]
int QFormLayout::spacing() const
Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QLayout::spacing.
Wenn der vertikale Abstand gleich dem horizontalen Abstand ist, 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)
Reimplements: 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 dekrementiert. Alle folgenden Zeilen werden um eine Zeile nach oben verschoben und der freigewordene vertikale Platz wird auf die verbleibenden Zeilen umverteilt.
Sie können diese Funktion verwenden, um eine vorherige 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().
Rückgabe Eine Struktur, die sowohl das Widget als auch die entsprechenden Etiketten-Layoutelemente enthält
Siehe auch removeRow().
QFormLayout::TakeRowResult QFormLayout::takeRow(QLayout *layout)
Dies ist eine überladene Funktion.
Entfernt das angegebene layout aus diesem Formularlayout.
Hinweis: Diese Funktion löscht nichts.
Nach diesem Aufruf wird rowCount() um eins dekrementiert. Alle folgenden Zeilen werden um eine Zeile nach oben verschoben und der freigewordene vertikale Platz wird auf die verbleibenden Zeilen umverteilt.
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 wollen, verwenden Sie stattdessen removeRow().
Rückgabe Eine Struktur, die sowohl das Widget als auch die entsprechenden Etikettenlayoutelemente enthält.
Siehe auch removeRow().
QFormLayout::TakeRowResult QFormLayout::takeRow(QWidget *widget)
Dies ist eine überladene Funktion.
Entfernt das angegebene widget aus diesem Formularlayout.
Hinweis: Diese Funktion löscht nichts.
Nach diesem Aufruf wird rowCount() um eins dekrementiert. Alle folgenden Zeilen werden um eine Zeile nach oben verschoben und der freigewordene vertikale Platz wird auf die verbleibenden Zeilen umverteilt.
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 wollen, verwenden Sie stattdessen removeRow().
Rückgabe Eine Struktur, die sowohl das Widget als auch die entsprechenden Etiketten-Layoutelemente enthält.
Siehe auch removeRow().
© 2025 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.