Класс QFormLayout
Класс QFormLayout управляет формами виджетов ввода и их соответствующих меток. Подробнее...
| Заголовок: | #include <QFormLayout> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QLayout |
Открытые типы
| Структура | TakeRowResult |
| Перечисление | FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow } |
| Перечисление | ItemRole { LabelRole, FieldRole, SpanningRole } |
| Перечисление | RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows } |
Свойства
|
|
Открытые функции
| QFormLayout(QWidget *parent = nullptr) | |
| virtual | ~QFormLayout() |
| void | addRow(QWidget *label, QWidget *field) |
| void | addRow(QWidget *label, QLayout *field) |
| void | addRow(const QString &labelText, QWidget *field) |
| void | addRow(const QString &labelText, QLayout *field) |
| void | addRow(QWidget *widget) |
| void | addRow(QLayout *layout) |
| 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, QWidget *label, QLayout *field) |
| void | insertRow(int row, const QString &labelText, QWidget *field) |
| void | insertRow(int row, const QString &labelText, QLayout *field) |
| void | insertRow(int row, QWidget *widget) |
| void | insertRow(int row, QLayout *layout) |
| 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(QWidget *widget) |
| void | removeRow(QLayout *layout) |
| 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) |
| 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(QWidget *widget) |
| QFormLayout::TakeRowResult | takeRow(QLayout *layout) |
| int | verticalSpacing() const |
Реализованные открытые функции
| виртуальный void | addItem(QLayoutItem *item) override |
| виртуальный int | count() const override |
| виртуальный Qt::Orientations | expandingDirections() const override |
| виртуальный bool | hasHeightForWidth() const override |
| виртуальный int | heightForWidth(int width) const override |
| виртуальный void | invalidate() override |
| виртуальный QLayoutItem * | itemAt(int index) const override |
| виртуальный QSize | minimumSize() const override |
| виртуальный void | setGeometry(const QRect &rect) override |
| виртуальный void | setSpacing(int spacing) override |
| виртуальный QSize | sizeHint() const override |
| виртуальный int | spacing() const override |
| виртуальный QLayoutItem * | takeAt(int index) override |
Подробное описание
QFormLayout — это вспомогательный класс макета, который выстраивает свои дочерние элементы в форме двух столбцов. Левый столбец состоит из меток, а правый столбец состоит из виджетов «поля» (поля ввода, спинбоксы и т. д.).
Традиционно такие макеты формы из двух столбцов создавались с помощью QGridLayout. QFormLayout — это более высокий уровень альтернативы, который предоставляет следующие преимущества:
-
Придерживается руководств по внешнему виду различных платформ.
Например, руководства macOS Aqua и KDE предписывают выравнивание меток справа, в то время как приложения Windows и GNOME обычно используют выравнивание слева.
-
Поддержка переноса длинных строк.
На устройствах с небольшими экранами QFormLayout может быть настроен на перенос длинных строк, или даже на перенос всех строк.
-
Удобный API для создания пар метка—поле.
Перегрузка addRow(), принимающая QString и QWidget *, создает QLabel за кулисами и автоматически настраивает его партнера. Тогда мы можем написать код подобный этому:
QFormLayout *formLayout = new QFormLayout; formLayout->addRow(tr("&Name:"), nameLineEdit); formLayout->addRow(tr("&Email:"), emailLineEdit); formLayout->addRow(tr("&Age:"), ageSpinBox); setLayout(formLayout);Сравните это с следующим кодом, написанным с помощью QGridLayout:
nameLabel = new QLabel(tr("&Name:")); nameLabel->setBuddy(nameLineEdit); emailLabel = new QLabel(tr("&Name:")); emailLabel->setBuddy(emailLineEdit); ageLabel = new QLabel(tr("&Name:")); ageLabel->setBuddy(ageSpinBox); QGridLayout *gridLayout = new QGridLayout; 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); setLayout(gridLayout);
В таблице ниже показан внешний вид по умолчанию в различных стилях.
| QCommonStyle производные стили (кроме QPlastiqueStyle) | QMacStyle | QPlastiqueStyle | Расширенные стили Qt |
|---|---|---|---|
| Традиционный стиль, используемый для Windows, GNOME и более ранних версий KDE. Метки выравниваются по левому краю, и расширяющиеся поля увеличиваются, заполняя доступное пространство. (Это обычно соответствует тому, что мы получили бы, используя двухстолбцовый QGridLayout.) | Стиль, основанный на рекомендациях macOS Aqua. Метки выравниваются по правому краю, поля не расширяются за свои размеры, и форма выравнивается по горизонтали. | Рекомендуемый стиль для приложений KDE. Похож на MacStyle, за исключением того, что форма выровнена по левому краю, и все поля расширяются, заполняя доступное пространство. | Стиль по умолчанию для расширенных стилей Qt. Метки выравниваются по правому краю, расширяющиеся поля заполняют доступное пространство, и перенос строк включен для длинных строк. |
Стиль формы также может быть переопределен индивидуально с помощью вызова setLabelAlignment(), setFormAlignment(), setFieldGrowthPolicy() и setRowWrapPolicy(). Например, чтобы смоделировать внешний вид макета формы QMacStyle на всех платформах, но с метками, выровненными по левому краю, можно написать:
formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows); formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint); formLayout->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop); formLayout->setLabelAlignment(Qt::AlignLeft);
См. также QGridLayout, QBoxLayout и QStackedLayout.
Документация по типам членов
перечисление QFormLayout::FieldGrowthPolicy
Это перечисление определяет различные политики, которые могут использоваться для управления тем, как растут поля формы.
| Постоянная | Значение | Описание |
|---|---|---|
QFormLayout::FieldsStayAtSizeHint |
0 |
Поля никогда не расширяются за свои эффективные размеры. Это значение по умолчанию для QMacStyle. |
QFormLayout::ExpandingFieldsGrow |
1 |
Поля с горизонтальной политикой размера Expanding или MinimumExpanding будут расширяться, заполняя доступное пространство. Остальные поля не будут расширяться за свои эффективные размеры. Это политика по умолчанию для Plastique. |
QFormLayout::AllNonFixedFieldsGrow |
2 |
Все поля с политикой размера, которая позволяет им расширяться, будут расширяться, заполняя доступное пространство. Это политика по умолчанию для большинства стилей. |
См. также fieldGrowthPolicy.
перечисление QFormLayout::ItemRole
Это перечисление определяет типы виджетов (или других элементов макета), которые могут появляться в строке.
| Постоянная | Значение | Описание |
|---|---|---|
QFormLayout::LabelRole |
0 |
Виджет метки. |
QFormLayout::FieldRole |
1 |
Виджет поля. |
QFormLayout::SpanningRole |
2 |
Виджет, который охватывает столбцы меток и полей. |
См. также itemAt() и getItemPosition().
перечисление QFormLayout::RowWrapPolicy
Это перечисление определяет различные политики, которые могут использоваться для управления тем, как переноситься строки формы.
| Постоянная | Значение | Описание |
|---|---|---|
QFormLayout::DontWrapRows |
0 |
Поля всегда размещаются рядом с их меткой. Это политика по умолчанию для всех стилей, кроме расширенных стилей Qt. |
QFormLayout::WrapLongRows |
1 |
Меткам предоставляется достаточно горизонтального места, чтобы вместить самую широкую метку, а оставшееся место предоставляется полям. Если минимальный размер пары поле-метка шире доступного пространства, поле переносится на следующую строку. Это политика по умолчанию для расширенных стилей Qt. |
QFormLayout::WrapAllRows |
2 |
Поля всегда размещаются под их меткой. |
См. также rowWrapPolicy.
END_OF_DOCUMENT_MARKERДокументация по свойству
fieldGrowthPolicy : FieldGrowthPolicy
Это свойство определяет способ роста полей формы.
Значение по умолчанию зависит от виджета или стиля приложения. Для QMacStyle значение по умолчанию — FieldsStayAtSizeHint; для стилей, производных от QCommonStyle (например, Plastique и Windows), значение по умолчанию — ExpandingFieldsGrow; для стилей Qt Extended значение по умолчанию — AllNonFixedFieldsGrow.
Если ни одно из полей не может расти, и форма изменяет размер, дополнительное пространство распределяется в соответствии с текущим выравниванием формы.
Функции доступа:
| QFormLayout::FieldGrowthPolicy | fieldGrowthPolicy() const |
| void | setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy) |
См. также formAlignment и rowWrapPolicy.
formAlignment : Qt::Alignment
Это свойство определяет выравнивание содержимого макета формы внутри геометрии макета.
Значение по умолчанию зависит от виджета или стиля приложения. Для QMacStyle значение по умолчанию — Qt::AlignHCenter | Qt::AlignTop; для других стилей значение по умолчанию — Qt::AlignLeft | Qt::AlignTop.
Функции доступа:
| Qt::Alignment | formAlignment() const |
| void | setFormAlignment(Qt::Alignment alignment) |
См. также labelAlignment и rowWrapPolicy.
horizontalSpacing : int
Это свойство определяет интервал между виджетами, расположенными рядом.
По умолчанию, если значение явно не установлено, горизонтальный интервал макета наследуется от родительского макета или из настроек стиля родительского виджета.
Функции доступа:
| int | horizontalSpacing() const |
| void | setHorizontalSpacing(int spacing) |
См. также verticalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.
labelAlignment : Qt::Alignment
Это свойство определяет горизонтальное выравнивание меток.
Значение по умолчанию зависит от виджета или стиля приложения. Для стилей, производных от QCommonStyle, кроме QPlastiqueStyle, значение по умолчанию — Qt::AlignLeft; для других стилей значение по умолчанию — Qt::AlignRight.
Функции доступа:
| Qt::Alignment | labelAlignment() const |
| void | setLabelAlignment(Qt::Alignment alignment) |
См. также formAlignment.
rowWrapPolicy : RowWrapPolicy
Это свойство определяет способ перевода строк формы.
Значение по умолчанию зависит от виджета или стиля приложения. Для стилей Qt Extended значение по умолчанию — WrapLongRows; для других стилей значение по умолчанию — DontWrapRows.
Если вы хотите отобразить каждую метку над соответствующим полем (вместо рядом с ним), установите это свойство в WrapAllRows.
Функции доступа:
| QFormLayout::RowWrapPolicy | rowWrapPolicy() const |
| void | setRowWrapPolicy(QFormLayout::RowWrapPolicy policy) |
См. также fieldGrowthPolicy.
verticalSpacing : int
Это свойство определяет интервал между виджетами, расположенными вертикально.
По умолчанию, если значение явно не установлено, вертикальный интервал макета наследуется от родительского макета или из настроек стиля родительского виджета.
Функции доступа:
| int | verticalSpacing() const |
| void | setVerticalSpacing(int spacing) |
См. также horizontalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.
Документация по членам-функциям
QFormLayout::QFormLayout(QWidget *parent = nullptr)
Создает новый макет формы с заданным виджетом parent.
Макет устанавливается непосредственно как верхний макет для parent. Для виджета может быть только один верхний макет. Он возвращается функцией QWidget::layout().
См. также QWidget::setLayout().
[virtual] QFormLayout::~QFormLayout()
Уничтожает макет формы.
[override virtual] void QFormLayout::addItem(QLayoutItem *item)
Переопределяет: QLayout::addItem(QLayoutItem *item).
void QFormLayout::addRow(QWidget *label, QWidget *field)
Добавляет новую строку в конец этого макета формы с заданными label и field.
См. также insertRow().
void QFormLayout::addRow(QWidget *label, QLayout *field)
Это перегруженная функция.
void QFormLayout::addRow(const QString &labelText, QWidget *field)
Это перегруженная функция.
Этот перегруз автоматически создаёт QLabel за кулисами со строкой labelText в качестве текста. field устанавливается как новый QLabel's buddy.
void QFormLayout::addRow(const QString &labelText, QLayout *field)
Это перегруженная функция.
Этот перегруз автоматически создаёт QLabel за кулисами со строкой labelText в качестве текста.
void QFormLayout::addRow(QWidget *widget)
Это перегруженная функция.
Добавляет указанный widget в конец макета формы. widget занимает оба столбца.
void QFormLayout::addRow(QLayout *layout)
Это перегруженная функция.
Добавляет указанный layout в конец макета формы. layout занимает оба столбца.
[override virtual] int QFormLayout::count() const
Переопределяет: QLayout::count() const.
[override virtual] Qt::Orientations QFormLayout::expandingDirections() const
Переопределяет: QLayout::expandingDirections() const.
void QFormLayout::getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
Получает строку и роль (столбец) элемента по указанному index. Если index вне границ, *rowPtr устанавливается в -1; в противном случае строка сохраняется в *rowPtr, а роль — в *rolePtr.
См. также itemAt(), count(), getLayoutPosition() и getWidgetPosition().
void QFormLayout::getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
Получает строку и роль (столбец) указанного дочернего layout. Если layout не находится в форме макета, *rowPtr устанавливается в -1; в противном случае строка сохраняется в *rowPtr, а роль — в *rolePtr.
void QFormLayout::getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
Получает строку и роль (столбец) указанного widget в макете. Если widget не находится в макете, *rowPtr устанавливается в -1; в противном случае строка сохраняется в *rowPtr, а роль — в *rolePtr.
См. также getItemPosition() и itemAt().
[override virtual] bool QFormLayout::hasHeightForWidth() const
Переопределяет: QLayoutItem::hasHeightForWidth() const.
[override virtual] int QFormLayout::heightForWidth(int width) const
Переопределяет: QLayoutItem::heightForWidth(int) const.
void QFormLayout::insertRow(int row, QWidget *label, QWidget *field)
Вставляет новую строку в позицию row в этом макете формы с заданным label и field. Если row выходит за пределы, новая строка добавляется в конец.
См. также addRow().
void QFormLayout::insertRow(int row, QWidget *label, QLayout *field)
Это перегруженный метод.
void QFormLayout::insertRow(int row, const QString &labelText, QWidget *field)
Это перегруженный метод.
Этот перегруз автоматически создаёт QLabel за кулисами с labelText в качестве текста. field устанавливается в качестве нового QLabel's buddy.
void QFormLayout::insertRow(int row, const QString &labelText, QLayout *field)
Это перегруженный метод.
Этот перегруз автоматически создаёт QLabel за кулисами с labelText в качестве текста.
void QFormLayout::insertRow(int row, QWidget *widget)
Это перегруженный метод.
Вставляет указанный widget в позицию row в этом макете формы. widget охватывает оба столбца. Если row выходит за пределы, виджет добавляется в конец.
void QFormLayout::insertRow(int row, QLayout *layout)
Это перегруженный метод.
Вставляет указанный layout в позицию row в этом макете формы. layout охватывает оба столбца. Если row выходит за пределы, виджет добавляется в конец.
[override virtual] void QFormLayout::invalidate()
Переопределяет: QLayout::invalidate().
QLayoutItem *QFormLayout::itemAt(int row, QFormLayout::ItemRole role) const
Возвращает элемент макета в заданной row со значением role (столбец). Возвращает nullptr если такого элемента нет.
См. также QLayout::itemAt() и setItem().
[override virtual] QLayoutItem *QFormLayout::itemAt(int index) const
Переопределяет: QLayout::itemAt(int index) const.
QWidget *QFormLayout::labelForField(QWidget *field) const
Возвращает метку, связанную с заданным field.
См. также itemAt().
QWidget *QFormLayout::labelForField(QLayout *field) const
Это перегруженный метод.
[override virtual] QSize QFormLayout::minimumSize() const
Переопределяет: QLayout::minimumSize() const.
[since 5.8] void QFormLayout::removeRow(int row)
Удаляет строку row из этого макета формы.
row должен быть неотрицательным и меньше rowCount().
После этого вызова rowCount() уменьшается на единицу. Все виджеты и вложенные макеты, которые занимали эту строку, удаляются. Это включает в себя как виджет(ы) поля, так и метку, если она есть. Все последующие строки смещаются на одну строку вверх, а освободившееся вертикальное пространство перераспределяется между оставшимися строками.
Вы можете использовать эту функцию для отмены предыдущего addRow() или insertRow():
QFormLayout *flay = ...; QPointer<QLineEdit> le = new QLineEdit; flay->insertRow(2, "User:", le); // later: flay->removeRow(2); // le == nullptr at this point
Если вы хотите удалить строку из макета без удаления виджетов, используйте takeRow() вместо этого.
Эта функция была введена в Qt 5.8.
См. также takeRow().
[since 5.8] void QFormLayout::removeRow(QWidget *widget)
Это перегруженный метод.
Удаляет строку, соответствующую widget, из этого макета формы.
После этого вызова rowCount() уменьшается на единицу. Все виджеты и вложенные макеты, которые занимали эту строку, удаляются. Это включает в себя как виджет(ы) поля, так и метку, если она есть. Все последующие строки смещаются на одну строку вверх, а освободившееся вертикальное пространство перераспределяется между оставшимися строками.
Вы можете использовать эту функцию для отмены предыдущего addRow() или insertRow():
QFormLayout *flay = ...; QPointer<QLineEdit> le = new QLineEdit; flay->insertRow(2, "User:", le); // later: flay->removeRow(le); // le == nullptr at this point
Если вы хотите удалить строку из макета без удаления виджетов, используйте takeRow() вместо этого.
Эта функция была введена в Qt 5.8.
См. также takeRow().
[since 5.8] void QFormLayout::removeRow(QLayout *layout)
Это перегруженный метод.
Удаляет строку, соответствующую layout, из этого макета формы.
После этого вызова rowCount() уменьшается на единицу. Все виджеты и вложенные макеты, которые занимали эту строку, удаляются. Это включает в себя как виджет(ы) поля, так и метку, если она есть. Все последующие строки смещаются на одну строку вверх, а освободившееся вертикальное пространство перераспределяется между оставшимися строками.
Вы можете использовать эту функцию для отмены предыдущего addRow() или insertRow():
QFormLayout *flay = ...; QPointer<QVBoxLayout> vbl = new QVBoxLayout; flay->insertRow(2, "User:", vbl); // later: flay->removeRow(layout); // vbl == nullptr at this point
Если вы хотите удалить строку из макета формы без удаления вставленного макета, используйте takeRow() вместо этого.
Эта функция была введена в Qt 5.8.
См. также takeRow().
int QFormLayout::rowCount() const
Возвращает количество строк в форме.
См. также QLayout::count().
[override virtual] void QFormLayout::setGeometry(const QRect &rect)
Переопределяет: QLayout::setGeometry(const QRect &r).
void QFormLayout::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)
Устанавливает элемент в заданной row для заданной role в item, расширяя макет пустыми строками при необходимости.
Если ячейка уже занята, item не вставляется и сообщение об ошибке отправляется в консоль. item охватывает оба столбца.
Предупреждение: Не используйте эту функцию для добавления дочерних макетов или дочерних элементов виджетов. Используйте setLayout() или setWidget() вместо этого.
См. также setLayout().
void QFormLayout::setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)
Устанавливает под-макет в заданной строке для заданной роли в макет, расширяя макет формы пустыми строками при необходимости.
Если ячейка уже занята, макет не вставляется, и сообщение об ошибке отправляется в консоль.
Примечание: Для большинства приложений следует использовать addRow() или insertRow() вместо setLayout().
См. также setWidget().
[override virtual] void QFormLayout::setSpacing(int spacing)
Реализует функцию доступа к свойству: QLayout::spacing.
Эта функция устанавливает вертикальный и горизонтальный отступы на spacing.
См. также spacing(), setVerticalSpacing() и setHorizontalSpacing().
void QFormLayout::setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)
Устанавливает виджет в заданной строке для заданной роли на widget, расширяя макет пустыми строками при необходимости.
Если ячейка уже занята, widget не вставляется, и сообщение об ошибке отправляется в консоль.
Примечание: Для большинства приложений следует использовать addRow() или insertRow() вместо setWidget().
См. также setLayout().
[override virtual] QSize QFormLayout::sizeHint() const
Переопределяет: QLayoutItem::sizeHint() const.
[override virtual] int QFormLayout::spacing() const
Реализует функцию доступа к свойству: QLayout::spacing.
Если вертикальный отступ равен горизонтальному отступу, эта функция возвращает это значение; в противном случае она возвращает -1.
См. также setSpacing(), verticalSpacing() и horizontalSpacing().
[override virtual] QLayoutItem *QFormLayout::takeAt(int index)
Переопределяет: QLayout::takeAt(int index).
[since 5.8] QFormLayout::TakeRowResult QFormLayout::takeRow(int row)
Удаляет указанную строку из этого макета формы.
row должно быть неотрицательным и меньше rowCount().
Примечание: Эта функция ничего не удаляет.
После этого вызова rowCount() уменьшается на единицу. Все последующие строки сдвигаются вверх на одну строку, и освобожденное вертикальное пространство перераспределяется между оставшимися строками.
Вы можете использовать эту функцию, чтобы отменить предыдущий вызов addRow() или insertRow():
QFormLayout *flay = ...; QPointer<QLineEdit> le = new QLineEdit; flay->insertRow(2, "User:", le); // later: QFormLayout::TakeRowResult result = flay->takeRow(2);
Если вы хотите удалить строку из макета и удалить виджеты, используйте removeRow() вместо этого.
Возвращает Структуру, содержащую как виджет, так и соответствующие элементы макета метки.
Эта функция была введена в Qt 5.8.
См. также removeRow().
[since 5.8] QFormLayout::TakeRowResult QFormLayout::takeRow(QWidget *widget)
Это перегруженная функция.
Удаляет указанный widget из этого макета формы.
Примечание: Эта функция ничего не удаляет.
После этого вызова rowCount() уменьшается на единицу. Все последующие строки сдвигаются вверх на одну строку, и освобожденное вертикальное пространство перераспределяется между оставшимися строками.
QFormLayout *flay = ...; QPointer<QLineEdit> le = new QLineEdit; flay->insertRow(2, "User:", le); // later: QFormLayout::TakeRowResult result = flay->takeRow(widget);
Если вы хотите удалить строку из макета и удалить виджеты, используйте removeRow() вместо этого.
Возвращает Структуру, содержащую как виджет, так и соответствующие элементы макета метки.
Эта функция была введена в Qt 5.8.
См. также removeRow().
[since 5.8] QFormLayout::TakeRowResult QFormLayout::takeRow(QLayout *layout)
Это перегруженная функция.
Удаляет указанный макет из этого макета формы.
Примечание: Эта функция ничего не удаляет.
После этого вызова rowCount() уменьшается на единицу. Все последующие строки сдвигаются вверх на одну строку, и освобожденное вертикальное пространство перераспределяется между оставшимися строками.
QFormLayout *flay = ...; QPointer<QVBoxLayout> vbl = new QVBoxLayout; flay->insertRow(2, "User:", vbl); // later: QFormLayout::TakeRowResult result = flay->takeRow(widget);
Если вы хотите удалить строку из макета формы и удалить вставленный макет, используйте removeRow() вместо этого.
Возвращает Структуру, содержащую как виджет, так и соответствующие элементы макета метки.
Эта функция была введена в Qt 5.8.
См. также removeRow().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qformlayout.html