QFormLayout Class | Qt Widgets 5.15.18 (original) (raw)

The QFormLayout class manages forms of input widgets and their associated labels. More...

This class was introduced in Qt 4.4.

Property Documentation

fieldGrowthPolicy : FieldGrowthPolicy

This property holds the way in which the form's fields grow

The default value depends on the widget or application style. For QMacStyle, the default is FieldsStayAtSizeHint; for QCommonStyle derived styles (like Plastique and Windows), the default is ExpandingFieldsGrow; for Qt Extended styles, the default is AllNonFixedFieldsGrow.

If none of the fields can grow and the form is resized, extra space is distributed according to the current form alignment.

Access functions:

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

See also formAlignment and rowWrapPolicy.

formAlignment : Qt::Alignment

This property holds the alignment of the form layout's contents within the layout's geometry

The default value depends on the widget or application style. For QMacStyle, the default is Qt::AlignHCenter | Qt::AlignTop; for the other styles, the default is Qt::AlignLeft | Qt::AlignTop.

Access functions:

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

See also labelAlignment and rowWrapPolicy.

horizontalSpacing : int

This property holds the spacing between widgets that are laid out side by side

By default, if no value is explicitly set, the layout's horizontal spacing is inherited from the parent layout, or from the style settings for the parent widget.

Access functions:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

See also verticalSpacing, QStyle::pixelMetric(), and PM_LayoutHorizontalSpacing.

labelAlignment : Qt::Alignment

This property holds the horizontal alignment of the labels

The default value depends on the widget or application style. For QCommonStyle derived styles, except for QPlastiqueStyle, the default is Qt::AlignLeft; for the other styles, the default is Qt::AlignRight.

Access functions:

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

See also formAlignment.

rowWrapPolicy : RowWrapPolicy

This property holds the way in which the form's rows wrap

The default value depends on the widget or application style. For Qt Extended styles, the default is WrapLongRows; for the other styles, the default is DontWrapRows.

If you want to display each label above its associated field (instead of next to it), set this property to WrapAllRows.

Access functions:

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

See also fieldGrowthPolicy.

verticalSpacing : int

This property holds the spacing between widgets that are laid out vertically

By default, if no value is explicitly set, the layout's vertical spacing is inherited from the parent layout, or from the style settings for the parent widget.

Access functions:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

See also horizontalSpacing, QStyle::pixelMetric(), and PM_LayoutHorizontalSpacing.

Member Function Documentation

QFormLayout::QFormLayout(QWidget *parent = nullptr)

Constructs a new form layout with the given parent widget.

The layout is set directly as the top-level layout for parent. There can be only one top-level layout for a widget. It is returned by QWidget::layout().

See also QWidget::setLayout().

[virtual] QFormLayout::~QFormLayout()

Destroys the form layout.

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

Reimplements: QLayout::addItem(QLayoutItem *item).

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

Adds a new row to the bottom of this form layout, with the given label and field.

See also insertRow().

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

This is an overloaded function.

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

This is an overloaded function.

This overload automatically creates a QLabel behind the scenes with labelText as its text. The field is set as the new QLabel's buddy.

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

This is an overloaded function.

This overload automatically creates a QLabel behind the scenes with labelText as its text.

void QFormLayout::addRow(QWidget *widget)

This is an overloaded function.

Adds the specified widget at the end of this form layout. The widget spans both columns.

void QFormLayout::addRow(QLayout *layout)

This is an overloaded function.

Adds the specified layout at the end of this form layout. The layout spans both columns.

[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

Retrieves the row and role (column) of the item at the specified index. If index is out of bounds, *rowPtr is set to -1; otherwise the row is stored in *rowPtr and the role is stored in *rolePtr.

See also itemAt(), count(), getLayoutPosition(), and getWidgetPosition().

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

Retrieves the row and role (column) of the specified child layout. If layout is not in the form layout, *rowPtr is set to -1; otherwise the row is stored in *rowPtr and the role is stored in *rolePtr.

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

Retrieves the row and role (column) of the specified widget in the layout. If widget is not in the layout, *rowPtr is set to -1; otherwise the row is stored in *rowPtr and the role is stored in *rolePtr.

See also getItemPosition() and 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)

Inserts a new row at position row in this form layout, with the given label and field. If row is out of bounds, the new row is added at the end.

See also addRow().

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

This is an overloaded function.

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

This is an overloaded function.

This overload automatically creates a QLabel behind the scenes with labelText as its text. The field is set as the new QLabel's buddy.

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

This is an overloaded function.

This overload automatically creates a QLabel behind the scenes with labelText as its text.

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

This is an overloaded function.

Inserts the specified widget at position row in this form layout. The widget spans both columns. If row is out of bounds, the widget is added at the end.

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

This is an overloaded function.

Inserts the specified layout at position row in this form layout. The layout spans both columns. If row is out of bounds, the widget is added at the end.

[override virtual] void QFormLayout::invalidate()

Reimplements: QLayout::invalidate().

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

Returns the layout item in the given row with the specified role (column). Returns nullptr if there is no such item.

See also QLayout::itemAt() and setItem().

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

Reimplements: QLayout::itemAt(int index) const.

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

Returns the label associated with the given field.

See also itemAt().

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

This is an overloaded function.

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

Reimplements: QLayout::minimumSize() const.

void QFormLayout::removeRow(int row)

Deletes row row from this form layout.

row must be non-negative and less than rowCount().

After this call, rowCount() is decremented by one. All widgets and nested layouts that occupied this row are deleted. That includes both the field widget(s) and the label, if any. All following rows are shifted up one row and the freed vertical space is redistributed amongst the remaining rows.

You can use this function to undo a previous addRow() or insertRow():

If you want to remove the row from the layout without deleting the widgets, use takeRow() instead.

This function was introduced in Qt 5.8.

See also takeRow().

void QFormLayout::removeRow(QWidget *widget)

This is an overloaded function.

Deletes the row corresponding to widget from this form layout.

After this call, rowCount() is decremented by one. All widgets and nested layouts that occupied this row are deleted. That includes both the field widget(s) and the label, if any. All following rows are shifted up one row and the freed vertical space is redistributed amongst the remaining rows.

You can use this function to undo a previous addRow() or insertRow():

If you want to remove the row from the layout without deleting the widgets, use takeRow() instead.

This function was introduced in Qt 5.8.

See also takeRow().

void QFormLayout::removeRow(QLayout *layout)

This is an overloaded function.

Deletes the row corresponding to layout from this form layout.

After this call, rowCount() is decremented by one. All widgets and nested layouts that occupied this row are deleted. That includes both the field widget(s) and the label, if any. All following rows are shifted up one row and the freed vertical space is redistributed amongst the remaining rows.

You can use this function to undo a previous addRow() or insertRow():

If you want to remove the row from the form layout without deleting the inserted layout, use takeRow() instead.

This function was introduced in Qt 5.8.

See also takeRow().

int QFormLayout::rowCount() const

Returns the number of rows in the form.

See also 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)

Sets the item in the given row for the given role to item, extending the layout with empty rows if necessary.

If the cell is already occupied, the item is not inserted and an error message is sent to the console. The item spans both columns.

Warning: Do not use this function to add child layouts or child widget items. Use setLayout() or setWidget() instead.

See also setLayout().

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

Sets the sub-layout in the given row for the given role to layout, extending the form layout with empty rows if necessary.

If the cell is already occupied, the layout is not inserted and an error message is sent to the console.

Note: For most applications, addRow() or insertRow() should be used instead of setLayout().

See also setWidget().

void QFormLayout::setSpacing(int spacing)

This function sets both the vertical and horizontal spacing to spacing.

See also spacing(), setVerticalSpacing(), and setHorizontalSpacing().

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

Sets the widget in the given row for the given role to widget, extending the layout with empty rows if necessary.

If the cell is already occupied, the widget is not inserted and an error message is sent to the console.

Note: For most applications, addRow() or insertRow() should be used instead of setWidget().

See also setLayout().

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

Reimplements: QLayoutItem::sizeHint() const.

int QFormLayout::spacing() const

If the vertical spacing is equal to the horizontal spacing, this function returns that value; otherwise it returns -1.

See also setSpacing(), verticalSpacing(), and horizontalSpacing().

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

Reimplements: QLayout::takeAt(int index).

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

Removes the specified row from this form layout.

row must be non-negative and less than rowCount().

Note: This function doesn't delete anything.

After this call, rowCount() is decremented by one. All following rows are shifted up one row and the freed vertical space is redistributed amongst the remaining rows.

You can use this function to undo a previous addRow() or insertRow():

If you want to remove the row from the layout and delete the widgets, use removeRow() instead.

Returns A structure containing both the widget and corresponding label layout items

This function was introduced in Qt 5.8.

See also removeRow().

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

This is an overloaded function.

Removes the specified widget from this form layout.

Note: This function doesn't delete anything.

After this call, rowCount() is decremented by one. All following rows are shifted up one row and the freed vertical space is redistributed amongst the remaining rows.

If you want to remove the row from the layout and delete the widgets, use removeRow() instead.

Returns A structure containing both the widget and corresponding label layout items

This function was introduced in Qt 5.8.

See also removeRow().

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

This is an overloaded function.

Removes the specified layout from this form layout.

Note: This function doesn't delete anything.

After this call, rowCount() is decremented by one. All following rows are shifted up one row and the freed vertical space is redistributed amongst the remaining rows.

If you want to remove the row from the form layout and delete the inserted layout, use removeRow() instead.

Returns A structure containing both the widget and corresponding label layout items

This function was introduced in Qt 5.8.

See also removeRow().