Spec-Zone.ru › Qt 5.11

Класс QFormLayout

Класс QFormLayout управляет формами виджетов ввода и их связанными метками. Подробнее...

Заголовок: #include <QFormLayout>
qmake: QT += widgets
С тех пор: Qt 4.4
Наследует: QLayout
  • Список всех членов, включая унаследованные

Открытые типы

класс TakeRowResult
перечисление FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow }
перечисление ItemRole { LabelRole, FieldRole, SpanningRole }
перечисление RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows }

Свойства

  • fieldGrowthPolicy : FieldGrowthPolicy
  • formAlignment : Qt::Alignment
  • horizontalSpacing : int
  • labelAlignment : Qt::Alignment
  • rowWrapPolicy : RowWrapPolicy
  • verticalSpacing : int
  • 2 свойства унаследованы от QLayout
  • 1 свойство унаследовано от QObject

Открытые функции

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
  • 36 public functions inherited from QLayout
  • 34 public functions inherited from QObject
  • 17 public functions inherited from QLayoutItem

Дополнительные унаследованные члены

  • 1 общедоступный слот, унаследованный от QObject
  • 2 сигналы, унаследованные от QObject
  • 1 общедоступная переменная, унаследованная от QObject
  • 1 статический общедоступный член, унаследованный от QLayout
  • 10 статических общедоступных членов, унаследованных от QObject
  • 4 защищенные функции, унаследованные от QLayout
  • 9 защищенных функций, унаследованных от QObject
  • 2 защищенные переменные, унаследованные от 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.

Документация по свойству

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.

См. также 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 (столбцом). Возвращает 0, если такого элемента нет.

См. также 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/archives/qt-5.11/qformlayout.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API