Класс QFormLayout
Класс QFormLayout управляет формами виджетов ввода и их соответствующими метками. Подробнее...
| Заголовок: | #include <QFormLayout> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.4 |
| Наследует: | 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 | setSpacing(int spacing) |
| void | setVerticalSpacing(int spacing) |
| void | setWidget(int row, QFormLayout::ItemRole role, QWidget *widget) |
| int | spacing() const |
| QFormLayout::TakeRowResult | takeRow(int row) |
| QFormLayout::TakeRowResult | takeRow(QWidget *widget) |
| QFormLayout::TakeRowResult | takeRow(QLayout *layout) |
| int | verticalSpacing() const |
Реализованные публичные функции
| 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 QSize | sizeHint() const override |
| virtual QLayoutItem * | takeAt(int index) override |
- 37 публичных функций унаследованных от QLayout
- 31 публичных функций унаследованных от QObject
- 17 публичных функций унаследованных от QLayoutItem
Статические публичные члены
| const QMetaObject | staticMetaObject |
- 1 статический публичный член, унаследованный от QLayout
- 9 статических публичных членов, унаследованных от QObject
Дополнительные унаследованные члены
- 1 публичный слот, унаследованный от QObject
- 2 сигнала, унаследованные от QObject
- 4 защищённых функций, унаследованных от QLayout
- 9 защищённых функций, унаследованных от QObject
Подробное описание
Класс QFormLayout управляет формами входных виджетов и их связанными метками.
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 значение по умолчанию — 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 значение по умолчанию — 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.
См. также QWidget::setLayout().
[virtual] QFormLayout::~QFormLayout()
Уничтожает макет формы.
[override virtual] void QFormLayout::addItem(QLayoutItem *item)
Переопределено из QLayout::addItem().
void QFormLayout::addRow(QWidget *label, QWidget *field)
Добавляет новую строку в конец этого макета формы с заданной меткой и полем.
См. также insertRow().
void QFormLayout::addRow(QWidget *label, QLayout *field)
Это перегруженная функция.
void QFormLayout::addRow(const QString &labelText, QWidget *field)
Это перегруженная функция.
Этот перегруз автоматически создаёт QLabel за кулисами со значением labelText в качестве текста. field устанавливается в качестве buddy нового QLabel.
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().
[override virtual] Qt::Orientations QFormLayout::expandingDirections() const
Переопределено из QLayout::expandingDirections().
void QFormLayout::getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
Получает строку и роль (столбец) элемента по указанному индексу. Если индекс вне диапазона, *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().
[override virtual] int QFormLayout::heightForWidth(int width) const
Переопределено из QLayoutItem::heightForWidth().
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().
QWidget *QFormLayout::labelForField(QWidget *field) const
Возвращает метку, связанную с заданным field.
См. также itemAt().
QWidget *QFormLayout::labelForField(QLayout *field) const
Это перегруженный метод.
[override virtual] QSize QFormLayout::minimumSize() const
Переопределено из QLayout::minimumSize().
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().
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().
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().
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)
Устанавливает подмакет в заданной row для заданной role на layout, расширяя макет формы пустыми строками при необходимости.
Если ячейка уже занята, layout не вставляется, и сообщение об ошибке отправляется в консоль.
Примечание: Для большинства приложений следует использовать addRow() или insertRow() вместо setLayout().
См. также setWidget().
void QFormLayout::setSpacing(int spacing)
Эта функция устанавливает вертикальный и горизонтальный отступ в spacing.
См. также spacing(), setVerticalSpacing(), и setHorizontalSpacing().
void QFormLayout::setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)
Устанавливает виджет в заданной row для заданного role в widget, расширяя макет пустыми строками при необходимости.
Если ячейка уже занята, widget не вставляется, и сообщение об ошибке отправляется в консоль.
Примечание: Для большинства приложений следует использовать addRow() или insertRow() вместо setWidget().
См. также setLayout().
[override virtual] QSize QFormLayout::sizeHint() const
Переопределено из QLayoutItem::sizeHint().
int QFormLayout::spacing() const
Если вертикальный отступ равен горизонтальному отступу, эта функция возвращает это значение; в противном случае возвращает -1.
См. также setSpacing(), verticalSpacing(), и horizontalSpacing().
[override virtual] QLayoutItem *QFormLayout::takeAt(int index)
Переопределено из QLayout::takeAt().
QFormLayout::TakeRowResult QFormLayout::takeRow(int row)
Удаляет указанную 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().
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().
QFormLayout::TakeRowResult QFormLayout::takeRow(QLayout *layout)
Это перегруженная функция.
Удаляет указанный 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-5.12/qformlayout.html