En esta página

QFormLayout Class

La clase QFormLayout gestiona formularios de widgets de entrada y sus etiquetas asociadas. Más...

Cabecera: #include <QFormLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QLayout

Tipos públicos

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

Propiedades

Funciones públicas

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

Funciones públicas reimplementadas

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

Descripción Detallada

QFormLayout es una clase de diseño que presenta a sus hijos en un formulario de dos columnas. La columna izquierda consiste en etiquetas y la columna derecha consiste en widgets de "campo" (editores de línea, cajas giratorias, etc.).

Tradicionalmente, estos diseños de formulario a dos columnas se conseguían utilizando QGridLayout. QFormLayout es una alternativa de nivel superior que ofrece las siguientes ventajas:

  • Adherencia a las directrices de aspecto de las distintas plataformas.

    Por ejemplo, las directrices de macOS Aqua y KDE especifican que las etiquetas deben estar alineadas a la derecha, mientras que las aplicaciones de Windows y GNOME utilizan normalmente la alineación a la izquierda.

  • Soporte para envolver filas largas.

    Para dispositivos con pantallas pequeñas, QFormLayout se puede establecer en wrap long rows, o incluso en wrap all rows.

  • API conveniente para crear pares etiqueta-campo.

    La sobrecarga addRow() que toma un QString y un QWidget * crea un QLabel entre bastidores y configura automáticamente su compañero. Podemos entonces escribir código como este:

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

    Compare esto con el siguiente código, escrito usando QGridLayout:

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

La siguiente tabla muestra la apariencia por defecto en diferentes estilos.

QCommonStyle Estilos derivados (excepto QPlastiqueStyle)QMacStyleQPlastiqueStyleEstilos Qt Extended
Diseño de formularios al estilo tradicionalDiseño de formularios al estilo Aqua de macOSDiseño de formularios en estilo KDE PlastiqueDiseño del formulario en estilo Qt Extended
Estilo tradicional usado para Windows, GNOME y versiones anteriores de KDE. Las etiquetas están alineadas a la izquierda, y los campos en expansión crecen hasta llenar el espacio disponible. (Esto corresponde normalmente a lo que obtendríamos usando una página de dos columnas QGridLayout.)Estilo basado en las directrices Aqua de macOS. Las etiquetas están alineadas a la derecha, los campos no crecen más allá de su tamaño y el formulario está centrado horizontalmente.Estilo recomendado para aplicaciones KDE. Similar a MacStyle, excepto que el formulario está alineado a la izquierda y todos los campos crecen para llenar el espacio disponible.Estilo por defecto para los estilos Qt Extended. Las etiquetas están alineadas a la derecha, los campos en expansión crecen hasta ocupar el espacio disponible y se activa el ajuste de filas para las líneas largas.

Los estilos de formulario también se pueden modificar individualmente llamando a setLabelAlignment(), setFormAlignment(), setFieldGrowthPolicy() y setRowWrapPolicy(). Por ejemplo, para simular la apariencia de diseño de formulario de QMacStyle en todas las plataformas, pero con etiquetas alineadas a la izquierda, podrías escribir:

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

Véase también QGridLayout, QBoxLayout, y QStackedLayout.

Documentación de tipos de miembros

enum QFormLayout::FieldGrowthPolicy

Este enum especifica las diferentes políticas que se pueden utilizar para controlar la forma en que crecen los campos del formulario.

ConstanteValorDescripción
QFormLayout::FieldsStayAtSizeHint0Los campos nunca crecen más allá de su effective size hint. Este es el valor por defecto para QMacStyle.
QFormLayout::ExpandingFieldsGrow1Los campos con un size policy horizontal de Expanding o MinimumExpanding crecerán hasta llenar el espacio disponible. Los demás campos no crecerán más allá de su tamaño efectivo. Esta es la política por defecto para Plastique.
QFormLayout::AllNonFixedFieldsGrow2Todos los campos con una política de tamaño que les permita crecer crecerán hasta llenar el espacio disponible. Esta es la política por defecto para la mayoría de los estilos.

Véase también fieldGrowthPolicy.

enum QFormLayout::ItemRole

Este enum especifica los tipos de widgets (u otros elementos de diseño) que pueden aparecer en una fila.

ConstanteValorDescripción
QFormLayout::LabelRole0Un widget de etiqueta.
QFormLayout::FieldRole1Un widget de campo.
QFormLayout::SpanningRole2Un widget que abarca columnas de etiqueta y de campo.

Véase también itemAt() y getItemPosition().

enum QFormLayout::RowWrapPolicy

Este enum especifica las diferentes políticas que se pueden utilizar para controlar la forma en que se envuelven las filas del formulario.

ConstanteValorDescripción
QFormLayout::DontWrapRows0Los campos siempre se disponen junto a su etiqueta. Esta es la política por defecto para todos los estilos excepto Qt Extended.
QFormLayout::WrapLongRows1A las etiquetas se les da suficiente espacio horizontal para que quepa la etiqueta más ancha, y el resto del espacio se da a los campos. Si el tamaño mínimo de un par de campos es mayor que el espacio disponible, el campo pasa a la línea siguiente. Esta es la política por defecto para los estilos Qt Extended.
QFormLayout::WrapAllRows2Los campos siempre se colocan debajo de su etiqueta.

Véase también rowWrapPolicy.

Documentación de propiedades

fieldGrowthPolicy : FieldGrowthPolicy

Esta propiedad contiene la forma en que crecen los campos del formulario

El valor por defecto depende del widget o estilo de aplicación. Para QMacStyle, el valor por defecto es FieldsStayAtSizeHint; para estilos derivados de QCommonStyle (como Plastique y Windows), el valor por defecto es ExpandingFieldsGrow; para estilos Qt Extended, el valor por defecto es AllNonFixedFieldsGrow.

Si ninguno de los campos puede crecer y se redimensiona el formulario, el espacio extra se distribuye según el form alignment actual.

Funciones de acceso:

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

Véase también formAlignment y rowWrapPolicy.

formAlignment : Qt::Alignment

Esta propiedad mantiene la alineación de los contenidos del diseño del formulario dentro de la geometría del diseño.

El valor por defecto depende del estilo del widget o de la aplicación. Para QMacStyle, el valor por defecto es Qt::AlignHCenter | Qt::AlignTop; para los otros estilos, el valor por defecto es Qt::AlignLeft | Qt::AlignTop.

Funciones de acceso:

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

Véase también labelAlignment y rowWrapPolicy.

horizontalSpacing : int

Esta propiedad contiene el espaciado entre widgets que están dispuestos uno al lado del otro.

Por defecto, si no se establece ningún valor explícitamente, el espaciado horizontal del diseño se hereda del diseño padre, o de los ajustes de estilo del widget padre.

Funciones de acceso:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

Véase también verticalSpacing, QStyle::pixelMetric(), y PM_LayoutHorizontalSpacing.

labelAlignment : Qt::Alignment

Esta propiedad mantiene la alineación horizontal de las etiquetas.

El valor por defecto depende del estilo del widget o de la aplicación. Para los estilos derivados de QCommonStyle, excepto para QPlastiqueStyle, el valor por defecto es Qt::AlignLeft; para el resto de estilos, el valor por defecto es Qt::AlignRight.

Funciones de acceso:

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

Véase también formAlignment.

rowWrapPolicy : RowWrapPolicy

Esta propiedad mantiene la forma en que se envuelven las filas del formulario.

El valor por defecto depende del estilo del widget o de la aplicación. Para los estilos Qt Extended, el valor por defecto es WrapLongRows; para los otros estilos, el valor por defecto es DontWrapRows.

Si desea mostrar cada etiqueta encima de su campo asociado (en lugar de junto a él), establezca esta propiedad a WrapAllRows.

Funciones de acceso:

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

Véase también fieldGrowthPolicy.

verticalSpacing : int

Esta propiedad contiene el espaciado entre los widgets que están dispuestos verticalmente.

Por defecto, si no se establece ningún valor explícitamente, el espaciado vertical del diseño se hereda del diseño padre, o de los ajustes de estilo del widget padre.

Funciones de acceso:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

Véase también horizontalSpacing, QStyle::pixelMetric(), y PM_LayoutHorizontalSpacing.

Documentación de las funciones miembro

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

Construye un nuevo diseño de formulario con el widget parent dado.

El diseño se establece directamente como el diseño de nivel superior para parent. Sólo puede haber un diseño de nivel superior para un widget. Es devuelto por QWidget::layout().

Véase también QWidget::setLayout().

[virtual noexcept] QFormLayout::~QFormLayout()

Destruye el diseño del formulario.

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

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

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

Añade una nueva fila en la parte inferior del formulario, con las direcciones label y field.

Véase también insertRow().

void QFormLayout::addRow(QLayout *layout)

Añade el layout especificado al final de este diseño de formulario. El layout abarca ambas columnas.

Se trata de una función sobrecargada.

void QFormLayout::addRow(QWidget *widget)

Añade el widget especificado al final de este diseño de formulario. El widget abarca ambas columnas.

Se trata de una función sobrecargada.

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

Se trata de una función sobrecargada.

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

Esta sobrecarga crea automáticamente un QLabel entre bastidores con labelText como texto.

Se trata de una función sobrecargada.

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

Esta sobrecarga crea automáticamente un QLabel entre bastidores con labelText como texto. El field se establece como el nuevo QLabel's buddy.

Se trata de una función sobrecargada.

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

Reimplementa: QLayout::count() const.

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

Reimplementa: QLayout::expandingDirections() const.

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

Recupera la fila y el rol (columna) del elemento en el index especificado . Si index está fuera de los límites, *rowPtr se establece en -1; de lo contrario, la fila se almacena en *rowPtr y el rol se almacena en *rolePtr.

Véase también itemAt(), count(), getLayoutPosition() y getWidgetPosition().

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

Recupera la fila y el rol (columna) del hijo especificado layout. Si layout no está en el diseño del formulario, *rowPtr se establece en -1; de lo contrario, la fila se almacena en *rowPtr y el rol se almacena en *rolePtr.

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

Recupera la fila y el rol (columna) del widget especificado en la presentación. Si widget no está en la presentación, *rowPtr se establece en -1; de lo contrario, la fila se almacena en *rowPtr y el rol se almacena en *rolePtr.

Véase también getItemPosition() y itemAt().

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

Reimplementa: QLayoutItem::hasHeightForWidth() const.

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

Reimplementa: QLayoutItem::heightForWidth(int) const.

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

Inserta una nueva fila en la posición row en este diseño de formulario, con los valores dados label y field. Si row está fuera de los límites, la nueva fila se añade al final.

Véase también addRow().

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

Inserta el layout especificado en la posición row en este diseño de formulario. layout abarca ambas columnas. Si row está fuera de los límites, el widget se añade al final.

Esta es una función sobrecargada.

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

Inserta el widget especificado en la posición row en este diseño de formulario. widget abarca ambas columnas. Si row está fuera de los límites, el widget se añade al final.

Esta es una función sobrecargada.

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

Se trata de una función sobrecargada.

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

Esta sobrecarga crea automáticamente un QLabel entre bastidores con labelText como texto.

Se trata de una función sobrecargada.

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

Esta sobrecarga crea automáticamente un QLabel entre bastidores con labelText como texto. El field se establece como el nuevo QLabel's buddy.

Se trata de una función sobrecargada.

[override virtual] void QFormLayout::invalidate()

Reimplementa: QLayout::invalidate().

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

Devuelve true si algunos elementos de la fila row son visibles, en caso contrario devuelve false.

Esta función se introdujo en Qt 6.4.

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

Devuelve true si algunos elementos de la fila correspondiente a layout son visibles, en caso contrario devuelve false.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.4.

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

Devuelve true si algunos elementos de la fila correspondiente a widget son visibles, en caso contrario devuelve false.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.4.

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

Reimplementa: QLayout::itemAt(int índice) const.

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

Devuelve el elemento de diseño en el row dado con el role especificado (columna). Devuelve nullptr si no existe tal elemento.

Véase también QLayout::itemAt() y setItem().

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

Devuelve la etiqueta asociada a la dirección field.

Véase también itemAt().

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

Se trata de una función sobrecargada.

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

Reimplementa: QLayout::minimumSize() const.

void QFormLayout::removeRow(int row)

Elimina la fila row de este diseño de formulario.

row debe ser no negativo y menor que rowCount().

Después de esta llamada, rowCount() se decrementa en uno. Todos los widgets y diseños anidados que ocupaban esta fila son eliminados. Esto incluye tanto el widget(s) de campo como la etiqueta, si la hubiera. Todas las filas siguientes se desplazan una fila hacia arriba y el espacio vertical liberado se redistribuye entre las filas restantes.

Puede utilizar esta función para deshacer una operación anterior de addRow() o insertRow():

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

Si desea eliminar la fila del diseño sin borrar los widgets, utilice takeRow() en su lugar.

Véase también takeRow().

void QFormLayout::removeRow(QLayout *layout)

Elimina la fila correspondiente a layout de este diseño de formulario.

Después de esta llamada, rowCount() se decrementa en uno. Todos los widgets y diseños anidados que ocupaban esta fila son eliminados. Esto incluye tanto el widget(s) de campo como la etiqueta, si la hubiera. Todas las filas siguientes se desplazan una fila hacia arriba y el espacio vertical liberado se redistribuye entre las filas restantes.

Puede utilizar esta función para deshacer una operación anterior de addRow() o insertRow():

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

Si desea eliminar la fila del diseño del formulario sin borrar el diseño insertado, utilice takeRow() en su lugar.

Se trata de una función sobrecargada.

Véase también takeRow().

void QFormLayout::removeRow(QWidget *widget)

Elimina la fila correspondiente a widget de este diseño de formulario.

Después de esta llamada, rowCount() se decrementa en uno. Todos los widgets y diseños anidados que ocupaban esta fila son eliminados. Esto incluye tanto el widget(s) de campo como la etiqueta, si la hubiera. Todas las filas siguientes se desplazan una fila hacia arriba y el espacio vertical liberado se redistribuye entre las filas restantes.

Puede utilizar esta función para deshacer una operación anterior de addRow() o insertRow():

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

Si desea eliminar la fila del diseño sin borrar los widgets, utilice takeRow() en su lugar.

Esta función está sobrecargada.

Véase también takeRow().

int QFormLayout::rowCount() const

Devuelve el número de filas del formulario.

Véase también QLayout::count().

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

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

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

Establece el elemento en el row dado para el role dado en item, ampliando el diseño con filas vacías si es necesario.

Si la celda ya está ocupada, el item no se inserta y se envía un mensaje de error a la consola. El item abarca ambas columnas.

Advertencia: No utilice esta función para añadir layouts hijos o elementos widget hijos. Utilice setLayout() o setWidget() en su lugar.

Véase también setLayout().

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

Establece el sub-diseño en el row dado para el role dado a layout, extendiendo el diseño del formulario con filas vacías si es necesario.

Si la celda ya está ocupada, el layout no se inserta y se envía un mensaje de error a la consola.

Nota: Para la mayoría de las aplicaciones, debería utilizarse addRow() o insertRow() en lugar de setLayout().

Véase también setWidget().

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

Muestra la fila row si on es verdadero, en caso contrario oculta la fila.

row debe ser no negativo y menor que rowCount().

Esta función se introdujo en Qt 6.4.

Véase también isRowVisible(), removeRow(), y takeRow().

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

Muestra la fila correspondiente a layout si on es verdadero, en caso contrario oculta la fila.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.4.

Véase también removeRow() y takeRow().

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

Muestra la fila correspondiente a widget si on es verdadero, en caso contrario oculta la fila.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.4.

Véase también removeRow() y takeRow().

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

Reimplementa una función de acceso para la propiedad: QLayout::spacing.

Esta función establece tanto el espaciado vertical como el horizontal en spacing.

Véase también spacing(), setVerticalSpacing() y setHorizontalSpacing().

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

Establece el widget en el row dado para el role dado a widget, extendiendo el diseño con filas vacías si es necesario.

Si la celda ya está ocupada, el widget no se inserta y se envía un mensaje de error a la consola.

Nota: Para la mayoría de las aplicaciones, debería utilizarse addRow() o insertRow() en lugar de setWidget().

Véase también setLayout().

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

Reimplementa: QLayoutItem::sizeHint() const.

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

Reimplementa una función de acceso a la propiedad: QLayout::spacing.

Si el espaciado vertical es igual al horizontal, esta función devuelve ese valor; en caso contrario, devuelve -1.

Véase también setSpacing(), verticalSpacing(), y horizontalSpacing().

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

Reimplementa: QLayout::takeAt(int índice).

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

Elimina el row especificado de este diseño de formulario.

row debe ser no negativo y menor que rowCount().

Nota: Esta función no borra nada.

Después de esta llamada, rowCount() se decrementa en uno. Todas las filas siguientes se desplazan una fila hacia arriba y el espacio vertical liberado se redistribuye entre las filas restantes.

Puede utilizar esta función para deshacer una llamada anterior a addRow() o insertRow():

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

Si desea eliminar la fila del diseño y borrar los widgets, utilice removeRow() en su lugar.

Devuelve Una estructura que contiene tanto el widget como los elementos correspondientes de la etiqueta.

Véase también removeRow().

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

Elimina el layout especificado de este diseño de formulario.

Nota: Esta función no borra nada.

Después de esta llamada, rowCount() se decrementa en uno. Todas las filas siguientes se desplazan una fila hacia arriba y el espacio vertical liberado se redistribuye entre las filas restantes.

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

Si desea eliminar la fila del diseño del formulario y borrar el diseño insertado, utilice removeRow() en su lugar.

Devuelve Una estructura que contiene tanto el widget como los elementos de diseño de la etiqueta correspondiente

Esta es una función sobrecargada.

Véase también removeRow().

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

Elimina el widget especificado de este diseño de formulario.

Nota: Esta función no borra nada.

Después de esta llamada, rowCount() se decrementa en uno. Todas las filas siguientes se desplazan una fila hacia arriba y el espacio vertical liberado se redistribuye entre las filas restantes.

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

Si desea eliminar la fila del diseño y borrar los widgets, utilice removeRow() en su lugar.

Devuelve Una estructura que contiene tanto el widget como los elementos correspondientes de la etiqueta.

Esta es una función sobrecargada.

Véase también 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.