![]() |
CopperSpice API
1.7.4
|
The QFormLayout class manages forms of input widgets and their associated labels. More...
Public Types | |
enum | FieldGrowthPolicy |
enum | ItemRole |
enum | RowWrapPolicy |
![]() | |
enum | SizeConstraint |
Public Methods | |
QFormLayout (QWidget *parent=nullptr) | |
~QFormLayout () | |
void | addItem (QLayoutItem *item) override |
void | addRow (const QString &labelText, QLayout *field) |
void | addRow (const QString &labelText, QWidget *field) |
void | addRow (QLayout *layout) |
void | addRow (QWidget *label, QLayout *field) |
void | addRow (QWidget *label, QWidget *field) |
void | addRow (QWidget *widget) |
int | count () const override |
Qt::Orientations | expandingDirections () const override |
FieldGrowthPolicy | fieldGrowthPolicy () const |
Qt::Alignment | formAlignment () const |
void | getItemPosition (int index, int *rowPtr, ItemRole *rolePtr) const |
void | getLayoutPosition (QLayout *layout, int *rowPtr, ItemRole *rolePtr) const |
void | getWidgetPosition (QWidget *widget, int *rowPtr, ItemRole *rolePtr) const |
bool | hasHeightForWidth () const override |
int | heightForWidth (int width) const override |
int | horizontalSpacing () const |
void | insertRow (int row, const QString &labelText, QLayout *field) |
void | insertRow (int row, const QString &labelText, QWidget *field) |
void | insertRow (int row, QLayout *layout) |
void | insertRow (int row, QWidget *label, QLayout *field) |
void | insertRow (int row, QWidget *label, QWidget *field) |
void | insertRow (int row, QWidget *widget) |
void | invalidate () override |
QLayoutItem * | itemAt (int index) const override |
QLayoutItem * | itemAt (int row, ItemRole role) const |
Qt::Alignment | labelAlignment () const |
QWidget * | labelForField (QLayout *field) const |
QWidget * | labelForField (QWidget *field) const |
QSize | minimumSize () const override |
int | rowCount () const |
RowWrapPolicy | rowWrapPolicy () const |
void | setFieldGrowthPolicy (FieldGrowthPolicy policy) |
void | setFormAlignment (Qt::Alignment alignment) |
void | setGeometry (const QRect &rect) override |
void | setHorizontalSpacing (int spacing) |
void | setItem (int row, ItemRole role, QLayoutItem *item) |
void | setLabelAlignment (Qt::Alignment alignment) |
void | setLayout (int row, ItemRole role, QLayout *layout) |
void | setRowWrapPolicy (RowWrapPolicy policy) |
void | setSpacing (int spacing) |
void | setVerticalSpacing (int spacing) |
void | setWidget (int row, ItemRole role, QWidget *widget) |
QSize | sizeHint () const override |
int | spacing () const |
QLayoutItem * | takeAt (int index) override |
int | verticalSpacing () const |
![]() | |
QLayout () | |
QLayout (QWidget *parent) | |
bool | activate () |
void | addWidget (QWidget *w) |
QMargins | contentsMargins () const |
QRect | contentsRect () const |
QSizePolicy::ControlTypes | controlTypes () const override |
Qt::Orientations | expandingDirections () const override |
QRect | geometry () const override |
void | getContentsMargins (int *left, int *top, int *right, int *bottom) const |
virtual int | indexOf (QWidget *widget) const |
void | invalidate () override |
bool | isEmpty () const override |
bool | isEnabled () const |
QLayout * | layout () override |
int | margin () const |
QSize | maximumSize () const override |
QWidget * | menuBar () const |
QSize | minimumSize () const override |
QWidget * | parentWidget () const |
void | removeItem (QLayoutItem *item) |
void | removeWidget (QWidget *widget) |
virtual QLayoutItem * | replaceWidget (QWidget *from, QWidget *to, Qt::FindChildOptions options=Qt::FindChildrenRecursively) |
bool | setAlignment (QLayout *layout, Qt::Alignment alignment) |
void | setAlignment (Qt::Alignment alignment) |
bool | setAlignment (QWidget *widget, Qt::Alignment alignment) |
void | setContentsMargins (const QMargins &margins) |
void | setContentsMargins (int left, int top, int right, int bottom) |
void | setEnabled (bool enable) |
void | setGeometry (const QRect &rect) override |
void | setMargin (int margin) |
void | setMenuBar (QWidget *widget) |
void | setSizeConstraint (SizeConstraint constraint) |
void | setSpacing (int spacing) |
SizeConstraint | sizeConstraint () const |
int | spacing () const |
void | update () |
![]() | |
QObject (QObject *parent=nullptr) | |
~QObject () | |
bool | blockSignals (bool block) |
const QList< QObject * > & | children () const |
bool | connect (const QObject *sender, const QString &signalMethod, const QString &location, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection) |
bool | connect (const QObject *sender, const QString &signalMethod, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection) |
bool | disconnect (const QObject *receiver, const QString &slotMethod=QString ()) const |
bool | disconnect (const QString &signalMethod, const QString &location, const QObject *receiver=nullptr, const QString &slotMethod=QString ()) const |
bool | disconnect (const QString &signalMethod=QString (), const QObject *receiver=nullptr, const QString &slotMethod=QString ()) const |
void | dumpObjectInfo () |
void | dumpObjectTree () |
QList< QString > | dynamicPropertyNames () const |
virtual bool | event (QEvent *event) |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
template<typename T > | |
T | findChild (const QString &childName=QString ()) const |
template<class T > | |
QList< T > | findChildren (const QRegularExpression ®Exp, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
template<class T > | |
QList< T > | findChildren (const QString &objName=QString (), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
bool | inherits (const QString &className) const |
void | installEventFilter (QObject *filterObj) |
bool | isWidgetType () const |
bool | isWindowType () const |
void | killTimer (int id) |
const QMetaObject * | metaObject () const |
void | moveToThread (QThread *targetThread) |
QString | objectName () const |
QObject * | parent () const |
template<class T = QVariant> | |
T | property (const QString &name) const |
void | removeEventFilter (QObject *obj) |
void | setObjectName (const QString &name) |
void | setParent (QObject *parent) |
bool | setProperty (const QString &name, const QVariant &value) |
bool | signalsBlocked () const |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
QThread * | thread () const |
![]() | |
QLayoutItem (Qt::Alignment alignment=Qt::Alignment ()) | |
virtual | ~QLayoutItem () |
Qt::Alignment | alignment () const |
virtual int | minimumHeightForWidth (int width) const |
void | setAlignment (Qt::Alignment alignment) |
virtual QSpacerItem * | spacerItem () |
virtual QWidget * | widget () |
Properties | |
fieldGrowthPolicy | |
formAlignment | |
horizontalSpacing | |
labelAlignment | |
rowWrapPolicy | |
verticalSpacing | |
![]() | |
margin | |
sizeConstraint | |
spacing | |
![]() | |
objectName | |
Additional Inherited Members | |
![]() | |
void | destroyed (QObject *obj=nullptr) |
void | objectNameChanged (const QString &objectName) |
![]() | |
void | deleteLater () |
![]() | |
static QSize | closestAcceptableSize (const QWidget *widget, const QSize &size) |
![]() | |
static bool | connect (const QObject *sender, const QMetaMethod &signalMethod, const QObject *receiver, const QMetaMethod &slotMethod, Qt::ConnectionType type=Qt::AutoConnection) |
static bool | connect (const QObject *sender, const QString &signalMethod, const QObject *receiver, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection, const QString &location=QString ()) |
static bool | connect (const QObject *sender, const QString &signalMethod, const QString &location, const QObject *receiver, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection) |
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class SlotClass , class... SlotArgs, class SlotReturn > | |
static bool | connect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, SlotReturn (SlotClass::*slotMethod)(SlotArgs...), Qt::ConnectionType type=Qt::AutoConnection) |
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class T > | |
static bool | connect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, T slotLambda, Qt::ConnectionType type=Qt::AutoConnection) |
static bool | disconnect (const QObject *sender, const QMetaMethod &signalMethod, const QObject *receiver, const QMetaMethod &slotMethod) |
static bool | disconnect (const QObject *sender, const QString &signalMethod, const QObject *receiver, const QString &slotMethod) |
static bool | disconnect (const QObject *sender, const QString &signalMethod, const QString &location, const QObject *receiver, const QString &slotMethod) |
static bool | disconnect (const QObject *sender, std::nullptr_t, const QObject *receiver, std::nullptr_t) |
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class SlotClass , class... SlotArgs, class SlotReturn > | |
static bool | disconnect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, SlotReturn (SlotClass::*slotMethod)(SlotArgs...)) |
template<class Sender , class SignalClass , class... SignalArgs, class Receiver > | |
static bool | disconnect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, std::nullptr_t slotMethod=nullptr) |
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class T > | |
static bool | disconnect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, T slotMethod) |
static QMetaObject & | staticMetaObject () |
static QString | tr (const char *text, const char *comment=nullptr, std::optional< int > numArg=std::optional< int >()) |
![]() | |
void | addChildLayout (QLayout *layout) |
void | addChildWidget (QWidget *widget) |
QRect | alignmentRect (const QRect &rect) const |
void | childEvent (QChildEvent *event) override |
![]() | |
virtual void | childEvent (QChildEvent *event) |
virtual void | connectNotify (const QMetaMethod &signalMethod) const |
virtual void | customEvent (QEvent *event) |
virtual void | disconnectNotify (const QMetaMethod &signalMethod) const |
bool | isSignalConnected (const QMetaMethod &signalMethod) const |
int | receivers (const QString &signal) const |
QObject * | sender () const |
int | senderSignalIndex () const |
virtual void | timerEvent (QTimerEvent *event) |
![]() | |
T | qobject_cast (QObject *object) |
QObjectList | |
The QFormLayout class manages forms of input widgets and their associated labels. QFormLayout is a convenience layout class that lays out its children in a two-column form. The left column consists of labels and the right column consists of "field" widgets (line editors, spin boxes, etc.).
Traditionally, such two-column form layouts were achieved using QGridLayout. QFormLayout is a higher-level alternative that provides the following advantages:
Convenient API for creating label–field pairs.The addRow() overload that takes a QString and a QWidget * creates a QLabel behind the scenes and automatically set up its buddy. We can then write code like this:
Compare this with the following code written using QGridLayout:
The table below shows the default appearance in different styles.
QCommonStyle derived styles (except QFusionStyle) | QMacStyle | QFusionStyle | CopperSpice Extended styles |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Traditional style used for Windows, GNOME, and earlier versions of KDE. Labels are left aligned, and expanding fields grow to fill the available space. (This normally corresponds to what we would get using a two-column QGridLayout.) | Style based on the Mac OS X Aqua guidelines. Labels are right-aligned, the fields do not grow beyond their size hint, and the form is horizontally centered. | Recommended style for KDE applications. Similar to MacStyle, except that the form is left-aligned and all fields grow to fill the available space. | Default style for CopperSpice Extended styles. Labels are right-aligned, expanding fields grow to fill the available space, and row wrapping is enabled for long lines. |
The form styles can be also be overridden individually by calling setLabelAlignment(), setFormAlignment(), setFieldGrowthPolicy(), and setRowWrapPolicy(). For example, to simulate the form layout appearance of QMacStyle on all platforms, but with left-aligned labels, you could write:
This enum specifies the different policies that can be used to control the way in which the form's fields grow.
Constant | Value | Description |
---|---|---|
QFormLayout::FieldsStayAtSizeHint | 0 | The fields never grow beyond their effective size hint. This is the default for QMacStyle. |
QFormLayout::ExpandingFieldsGrow | 1 | Fields with an horizontal size policy of Expanding or MinimumExpanding will grow to fill the available space. The other fields will not grow beyond their effective size hint. This is the default policy for Fusion. |
QFormLayout::AllNonFixedFieldsGrow | 2 | All fields with a size policy that allows them to grow will grow to fill the available space. This is the default policy for most styles. |
This enum specifies the types of widgets (or other layout items) that may appear in a row.
Constant | Value | Description |
---|---|---|
QFormLayout::LabelRole | 0 | A label widget. |
QFormLayout::FieldRole | 1 | A field widget. |
QFormLayout::SpanningRole | 2 | A widget that spans label and field columns. |
This enum specifies the different policies that can be used to control the way in which the form's rows wrap.
Constant | Value | Description |
---|---|---|
QFormLayout::DontWrapRows | 0 | Fields are always laid out next to their label. This is the default policy for all styles except Extended styles. |
QFormLayout::WrapLongRows | 1 | Labels are given enough horizontal space to fit the widest label, and the rest of the space is given to the fields. If the minimum size of a field pair is wider than the available space, the field is wrapped to the next line. This is the default policy for Extended styles. |
QFormLayout::WrapAllRows | 2 | Fields are always laid out below their label. |
|
explicit |
Constructs a new form layout with the given parent widget.
QFormLayout::~QFormLayout | ( | ) |
Destroys the form layout.
|
overridevirtual |
Reimplemented from QLayout::addItem().
Implements QLayout.
This overload automatically creates a QLabel behind the scenes with labelText as its text.
void QFormLayout::addRow | ( | QLayout * | layout | ) |
Adds the specified layout at the end of this form layout. The layout spans both columns.
This overload adds a row using the given label as the label. The field is set as the label's buddy.
Adds a new row to the bottom of this form layout, with the given label and field.
void QFormLayout::addRow | ( | QWidget * | widget | ) |
Adds the specified widget at the end of this form layout. The widget spans both columns.
|
overridevirtual |
Reimplemented from QLayout::count().
Implements QLayout.
|
overridevirtual |
Reimplemented from QLayoutItem::expandingDirections().
Implements QLayoutItem.
FieldGrowthPolicy QFormLayout::fieldGrowthPolicy | ( | ) | const |
Property documentation pending.
Qt::Alignment QFormLayout::formAlignment | ( | ) | const |
Property documentation pending.
void QFormLayout::getItemPosition | ( | int | index, |
int * | rowPtr, | ||
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.
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.
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.
|
overridevirtual |
Reimplemented from QLayoutItem::hasHeightForWidth().
Reimplemented from QLayoutItem.
|
overridevirtual |
Reimplemented from QLayoutItem::heightForWidth().
Reimplemented from QLayoutItem.
int QFormLayout::horizontalSpacing | ( | ) | const |
Property documentation pending.
This overload automatically creates a QLabel behind the scenes with labelText as its text.
void QFormLayout::insertRow | ( | int | row, |
QLayout * | layout | ||
) |
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.
This overload inserts a new row at position row using label as the label. The field is set as the label's buddy.
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.
void QFormLayout::insertRow | ( | int | row, |
QWidget * | widget | ||
) |
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.
|
overridevirtual |
Reimplemented from QLayoutItem::invalidate().
Reimplemented from QLayoutItem.
|
overridevirtual |
Reimplemented from QLayout::itemAt().
Implements QLayout.
QLayoutItem * QFormLayout::itemAt | ( | int | row, |
ItemRole | role | ||
) | const |
Returns the layout item in the given row with the specified role (column). Returns nullptr if there is no such item.
Qt::Alignment QFormLayout::labelAlignment | ( | ) | const |
Property documentation pending.
Returns the label associated with the given field.
Returns the label associated with the given field.
|
overridevirtual |
Implemented in subclasses to return the minimum size of this item.
Implements QLayoutItem.
int QFormLayout::rowCount | ( | ) | const |
Returns the number of rows in the form.
RowWrapPolicy QFormLayout::rowWrapPolicy | ( | ) | const |
Property documentation pending.
void QFormLayout::setFieldGrowthPolicy | ( | FieldGrowthPolicy | policy | ) |
Property documentation pending.
void QFormLayout::setFormAlignment | ( | Qt::Alignment | alignment | ) |
Property documentation pending.
|
overridevirtual |
Implemented in subclasses to set this item's geometry to rect.
Implements QLayoutItem.
void QFormLayout::setHorizontalSpacing | ( | int | spacing | ) |
Property documentation pending.
void QFormLayout::setItem | ( | int | row, |
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.
void QFormLayout::setLabelAlignment | ( | Qt::Alignment | alignment | ) |
Property documentation pending.
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.
void QFormLayout::setRowWrapPolicy | ( | RowWrapPolicy | policy | ) |
Property documentation pending.
void QFormLayout::setSpacing | ( | int | spacing | ) |
This method sets both the vertical and horizontal spacing to spacing.
void QFormLayout::setVerticalSpacing | ( | int | spacing | ) |
Property documentation pending.
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.
|
overridevirtual |
Reimplemented from QLayoutItem::sizeHint().
Implements QLayoutItem.
int QFormLayout::spacing | ( | ) | const |
If the vertical spacing is equal to the horizontal spacing, this function returns that value, otherwise it returns -1.
|
overridevirtual |
Reimplemented from QLayout::takeAt().
Implements QLayout.
int QFormLayout::verticalSpacing | ( | ) | const |
Property documentation pending.
|
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 Fusion and Windows), the default is ExpandingFieldsGrow; for CopperSpice 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.
Properties | Class Methods |
---|---|
read | fieldGrowthPolicy |
write | setFieldGrowthPolicy |
reset | resetFieldGrowthPolicy |
|
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.
Properties | Class Methods |
---|---|
read | formAlignment |
write | setFormAlignment |
reset | resetFormAlignment |
|
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.
Properties | Class Methods |
---|---|
read | horizontalSpacing |
write | setHorizontalSpacing |
|
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 QFusionStyle, the default is Qt::AlignLeft; for the other styles, the default is Qt::AlignRight.
Properties | Class Methods |
---|---|
read | labelAlignment |
write | setLabelAlignment |
reset | resetLabelAlignment |
|
This property holds the way in which the form's rows wrap.
The default value depends on the widget or application style. For 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.
Properties | Class Methods |
---|---|
read | rowWrapPolicy |
write | setRowWrapPolicy |
reset | resetRowWrapPolicy |
|
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.
Properties | Class Methods |
---|---|
read | verticalSpacing |
write | setVerticalSpacing |