Spec-Zone.ru › Qt 5.11

Класс QLayout

Класс QLayout — базовый класс менеджеров геометрии. Подробнее...

Заголовок: #include <QLayout>
qmake: QT += widgets
Наследуется от: QObject и QLayoutItem
Наследует:

QBoxLayout, QFormLayout, QGridLayout и QStackedLayout

  • Список всех членов, включая наследуемые
  • Устаревшие члены

Типы

Перечисление SizeConstraint { SetDefaultConstraint, SetFixedSize, SetMinimumSize, SetMaximumSize, SetMinAndMaxSize, SetNoConstraint }

Свойства

  • sizeConstraint : SizeConstraint
  • spacing : int
  • 1 свойство унаследовано от QObject

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

QLayout(QWidget *parent)
QLayout()
bool activate()
virtual void addItem(QLayoutItem *item) = 0
void addWidget(QWidget *w)
QMargins contentsMargins() const
QRect contentsRect() const
virtual int count() const = 0
void getContentsMargins(int *left, int *top, int *right, int *bottom) const
virtual int indexOf(QWidget *widget) const
bool isEnabled() const
virtual QLayoutItem * itemAt(int index) const = 0
QWidget * menuBar() const
QWidget * parentWidget() const
void removeItem(QLayoutItem *item)
void removeWidget(QWidget *widget)
QLayoutItem * replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOptions options = Qt::FindChildrenRecursively)
bool setAlignment(QWidget *w, Qt::Alignment alignment)
bool setAlignment(QLayout *l, Qt::Alignment alignment)
void setContentsMargins(int left, int top, int right, int bottom)
void setContentsMargins(const QMargins &margins)
void setEnabled(bool enable)
void setMenuBar(QWidget *widget)
void setSizeConstraint(QLayout::SizeConstraint)
void setSpacing(int)
QLayout::SizeConstraint sizeConstraint() const
int spacing() const
virtual QLayoutItem * takeAt(int index) = 0
void update()

Переопределенные открытые функции

virtual QSizePolicy::ControlTypes controlTypes() const override
virtual Qt::Orientations expandingDirections() const override
virtual QRect geometry() const override
virtual void invalidate() override
virtual bool isEmpty() const override
virtual QLayout * layout() override
virtual QSize maximumSize() const override
virtual QSize minimumSize() const override
virtual void setGeometry(const QRect &r) override
  • 34 открытых функции унаследованы от QObject
  • 17 открытых функций унаследованы от QLayoutItem

Статические открытые члены

QSize closestAcceptableSize(const QWidget *widget, const QSize &size)
  • 10 статических открытых членов унаследованы от QObject

Защищенные функции

void addChildLayout(QLayout *l)
void addChildWidget(QWidget *w)
QRect alignmentRect(const QRect &r) const

Переопределенные защищенные функции

virtual void childEvent(QChildEvent *e) override
  • 9 защищенных функций унаследованы от QObject

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

  • 1 открытый слот унаследован от QObject
  • 2 сигнала унаследованы от QObject
  • 1 открытая переменная унаследована от QObject
  • 2 защищенных переменных унаследованы от QObject

Подробное описание

Класс QLayout — базовый класс менеджеров геометрии.

Это абстрактный базовый класс, от которого наследуются конкретные классы QBoxLayout, QGridLayout, QFormLayout и QStackedLayout.

Для пользователей подклассов QLayout или QMainWindow вряд ли есть необходимость использовать базовые функции, предоставляемые QLayout, такие как setSizeConstraint() или setMenuBar(). Подробнее см. Управление макетами.

Для создания собственного менеджера макета реализуйте функции addItem(), sizeHint(), setGeometry(), itemAt() и takeAt(). Также следует реализовать minimumSize(), чтобы предотвратить изменение размера макета до нулевого размера при недостатке места. Для поддержки элементов, высота которых зависит от ширины, реализуйте hasHeightForWidth() и heightForWidth(). Подробнее см. примеры Border Layout и Flow Layout.

Управление геометрией прекращается при удалении менеджера макета.

См. также QLayoutItem, Управление макетами, Пример основных макетов, Пример макета Border Layout и Пример макета Flow Layout.

Документация по типам элементов

перечисление QLayout::SizeConstraint

Возможные значения:

Константа Значение Описание
QLayout::SetDefaultConstraint 0 Минимальный размер основного виджета устанавливается в minimumSize(), если у виджета нет минимального размера.
QLayout::SetFixedSize 3 Размер основного виджета устанавливается в sizeHint(); изменение размера невозможно.
QLayout::SetMinimumSize 2 Минимальный размер основного виджета устанавливается в minimumSize(); он не может быть меньше.
QLayout::SetMaximumSize 4 Максимальный размер основного виджета устанавливается в maximumSize(); он не может быть больше.
QLayout::SetMinAndMaxSize 5 Минимальный размер основного виджета устанавливается в minimumSize(), а максимальный — в maximumSize().
QLayout::SetNoConstraint 1 Виджет не ограничен.

См. также setSizeConstraint().

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

sizeConstraint : SizeConstraint

Это свойство определяет режим изменения размера макета.

По умолчанию используется режим SetDefaultConstraint.

Функции доступа:

QLayout::SizeConstraint sizeConstraint() const
void setSizeConstraint(QLayout::SizeConstraint)

spacing : int

Это свойство задаёт интервал между виджетами внутри макета.

Если значение не установлено явно, интервал наследуется от родительского макета или настроек стиля родительского виджета.

Для QGridLayout и QFormLayout можно установить разные горизонтальный и вертикальный интервалы, используя setHorizontalSpacing() и setVerticalSpacing(). В этом случае spacing() возвращает -1.

Функции доступа:

int spacing() const
void setSpacing(int)

См. также contentsRect(), getContentsMargins(), QStyle::layoutSpacing() и QStyle::pixelMetric().

Документация по функциям

QLayout::QLayout(QWidget *parent)

Создаёт новый главный QLayout с родителем parent. parent не может быть 0.

Для виджета может быть только один главный макет. Он возвращается функцией QWidget::layout().

QLayout::QLayout()

Создаёт новый дочерний QLayout.

Этот макет должен быть вставлен в другой макет, прежде чем начнется управление геометрией.

bool QLayout::activate()

Повторно выполняет расчёт макета для parentWidget(), если необходимо.

Обычно вызывать эту функцию не нужно, так как она вызывается автоматически в наиболее подходящее время. Она возвращает true, если макет был пересчитан.

См. также update() и QWidget::updateGeometry().

[protected] void QLayout::addChildLayout(QLayout *l)

Эта функция вызывается из функций addLayout() или insertLayout() в подклассах для добавления макета l как дочернего макета.

Единственный случай, когда вам нужно вызвать её напрямую, — это если вы реализуете пользовательский макет, поддерживающий вложенные макеты.

См. также QBoxLayout::addLayout(), QBoxLayout::insertLayout() и QGridLayout::addLayout().

[protected] void QLayout::addChildWidget(QWidget *w)

Эта функция вызывается из функций addWidget() в подклассах для добавления w как управляемого виджета макета.

Если w уже управляется макетом, эта функция выведет предупреждение и удалит w из этого макета. Поэтому эту функцию нужно вызвать перед добавлением w в структуру данных макета.

[pure virtual] void QLayout::addItem(QLayoutItem *item)

Реализуется в подклассах для добавления item. Способ добавления специфичен для каждого подкласса.

Эта функция обычно не вызывается в коде приложения. Для добавления виджета в макет используйте функцию addWidget(); для добавления дочернего макета используйте функцию addLayout(), предоставляемую соответствующим подклассом QLayout.

Примечание: Владение item передаётся макету, и макет отвечает за его удаление.

См. также addWidget(), QBoxLayout::addLayout() и QGridLayout::addLayout().

void QLayout::addWidget(QWidget *w)

Добавляет виджет w в этот макет способом, специфичным для макета. Эта функция использует addItem().

[protected] QRect QLayout::alignmentRect(const QRect &r) const

Возвращает прямоугольник, который должен быть охвачен, когда геометрия этого макета устанавливается в r, при условии, что этот макет поддерживает setAlignment().

Результат выводится из sizeHint() и expanding(). Он никогда не больше, чем r.

[override virtual protected] void QLayout::childEvent(QChildEvent *e)

Переопределено из QObject::childEvent().

[static] QSize QLayout::closestAcceptableSize(const QWidget *widget, const QSize &size)

Возвращает размер, который удовлетворяет всем ограничениям размера для widget, включая heightForWidth(), и который максимально близок к size.

QMargins QLayout::contentsMargins() const

Возвращает отступы, используемые вокруг макета.

По умолчанию QLayout использует значения, предоставленные стилем. На большинстве платформ отступ составляет 11 пикселей по всем направлениям.

Эта функция была добавлена в Qt 4.6.

См. также setContentsMargins().

QRect QLayout::contentsRect() const

Возвращает прямоугольник geometry() макета, но с учётом отступов содержимого.

Эта функция была добавлена в Qt 4.3.

См. также setContentsMargins() и getContentsMargins().

[override virtual] QSizePolicy::ControlTypes QLayout::controlTypes() const

Переопределено из QLayoutItem::controlTypes().

[pure virtual] int QLayout::count() const

Должно быть реализовано в подклассах для возвращения количества элементов в макете.

См. также itemAt().

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

Переопределено из QLayoutItem::expandingDirections().

Возвращает, может ли этот макет использовать больше места, чем sizeHint(). Значение Qt::Vertical или Qt::Horizontal означает, что он хочет расти только в одном измерении, тогда как Qt::Vertical | Qt::Horizontal означает, что он хочет расти в обоих измерениях.

По умолчанию возвращает Qt::Horizontal | Qt::Vertical. Подклассы переопределяют его, чтобы вернуть осмысленное значение на основе политик размера дочерних виджетов политики размера.

См. также sizeHint().

[override virtual] QRect QLayout::geometry() const

Переопределено из QLayoutItem::geometry().

См. также setGeometry().

void QLayout::getContentsMargins(int *left, int *top, int *right, int *bottom) const

Извлекает левые, верхние, правые и нижние отступы, используемые вокруг макета, и присваивает их *left, *top, *right и *bottom (если они не являются указателями null).

По умолчанию QLayout использует значения, предоставляемые стилем. На большинстве платформ отступ составляет 11 пикселей во всех направлениях.

Эта функция была добавлена в Qt 4.3.

См. также setContentsMargins(), QStyle::pixelMetric(), PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin и PM_LayoutBottomMargin.

[virtual] int QLayout::indexOf(QWidget *widget) const

Ищет виджет widget в этом макете (не включая дочерние макеты).

Возвращает индекс widget или -1, если widget не найден.

По умолчанию реализация перебирает все элементы с помощью itemAt()

[override virtual] void QLayout::invalidate()

Переопределено из QLayoutItem::invalidate().

[override virtual] bool QLayout::isEmpty() const

Переопределено из QLayoutItem::isEmpty().

bool QLayout::isEnabled() const

Возвращает true, если макет включён; в противном случае возвращает false.

См. также setEnabled().

[pure virtual] QLayoutItem *QLayout::itemAt(int index) const

Должно быть реализовано в подклассах для возвращения элемента макета по индексу index. Если такого элемента нет, функция должна вернуть 0. Элементы нумеруются последовательно с 0. Если элемент удален, другие элементы будут переиндексированы.

Эта функция может использоваться для перебора макета. Следующий код нарисует прямоугольник для каждого элемента макета в структуре макета виджета.

static void paintLayout(QPainter *painter, QLayoutItem *item)
{
    QLayout *layout = item->layout();
    if (layout) {
        for (int i = 0; i < layout->count(); ++i)
            paintLayout(painter, layout->itemAt(i));
    }
    painter->drawRect(item->geometry());
}

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    if (layout())
        paintLayout(&painter, layout());
}

См. также count() и takeAt().

[override virtual] QLayout *QLayout::layout()

Переопределено из QLayoutItem::layout().

[override virtual] QSize QLayout::maximumSize() const

Переопределено из QLayoutItem::maximumSize().

Возвращает максимальный размер этого макета. Это наибольший размер, который макет может иметь, при этом соблюдая все спецификации.

Возвращаемое значение не включает пространство, необходимое QWidget::setContentsMargins() или menuBar().

Реализация по умолчанию позволяет неограниченное изменение размера.

QWidget *QLayout::menuBar() const

Возвращает установленную для этого макета строку меню или 0, если строка меню не установлена.

См. также setMenuBar().

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

Переопределено из QLayoutItem::minimumSize().

Возвращает минимальный размер этого макета. Это наименьший размер, который макет может иметь, при этом соблюдая все спецификации.

Возвращаемое значение не включает пространство, необходимое QWidget::setContentsMargins() или menuBar().

Реализация по умолчанию позволяет неограниченное изменение размера.

QWidget *QLayout::parentWidget() const

Возвращает родительский виджет этого макета или 0, если этот макет не установлен ни на какой виджет.

Если макет является подмакетом, эта функция возвращает родительский виджет родительского макета.

См. также parent().

void QLayout::removeItem(QLayoutItem *item)

Удаляет элемент макета item из макета. Ответственность за удаление элемента лежит на вызывающей стороне.

Обратите внимание, что item может быть макетом (поскольку QLayout наследуется от QLayoutItem).

См. также removeWidget() и addItem().

void QLayout::removeWidget(QWidget *widget)

Удаляет виджет widget из макета. После этого вызова ответственность за предоставление виджету разумной геометрии или размещение виджета обратно в макет или явное скрытие, если необходимо, лежит на вызывающей стороне.

Примечание: Владение widget остаётся таким же, как при добавлении.

См. также removeItem(), QWidget::setGeometry() и addWidget().

QLayoutItem *QLayout::replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOptions options = Qt::FindChildrenRecursively)

Ищет виджет from и заменяет его виджетом to, если он найден. Возвращает элемент макета, содержащий виджет from при успехе. В противном случае возвращается 0. Если options содержит Qt::FindChildrenRecursively (по умолчанию), ищутся подмакеты для замены. Любой другой флаг в options игнорируется.

Обратите внимание, что возвращаемый элемент, следовательно, может не принадлежать этому макету, а подмакету.

Возвращаемый элемент макета больше не принадлежит макету и должен быть либо удалён, либо вставлен в другой макет. Виджет from больше не управляется макетом и, возможно, должен быть удалён или скрыт. Родитель виджета from остаётся неизменным.

Эта функция работает для встроенных макетов Qt, но может не работать для пользовательских макетов.

Эта функция была добавлена в Qt 5.2.

См. также indexOf().

bool QLayout::setAlignment(QWidget *w, Qt::Alignment alignment)

Устанавливает выравнивание для виджета w на alignment и возвращает true, если w найден в этом макете (не включая дочерние макеты); в противном случае возвращает false.

bool QLayout::setAlignment(QLayout *l, Qt::Alignment alignment)

Это перегруженная функция.

Устанавливает выравнивание для макета l на alignment и возвращает true если l найден в этом макете (не включая дочерние макеты); в противном случае возвращает false.

void QLayout::setContentsMargins(int left, int top, int right, int bottom)

Устанавливает отступы left, top, right и bottom для использования вокруг макета.

По умолчанию QLayout использует значения, предоставляемые стилем. На большинстве платформ отступ составляет 11 пикселей во всех направлениях.

Эта функция была добавлена в Qt 4.3.

См. также contentsMargins(), getContentsMargins(), QStyle::pixelMetric(), PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin и PM_LayoutBottomMargin.

void QLayout::setContentsMargins(const QMargins &margins)

Устанавливает отступы вокруг макета.

По умолчанию, QLayout использует значения, заданные стилем. На большинстве платформ отступ составляет 11 пикселей во всех направлениях.

Данная функция была введена в Qt 4.6.

См. также contentsMargins().

void QLayout::setEnabled(bool enable)

Включает данный макет, если enable равно true, иначе отключает.

Включенный макет динамически реагирует на изменения; отключенный макет ведет себя как несуществующий.

По умолчанию все макеты включены.

См. также isEnabled().

[override virtual] void QLayout::setGeometry(const QRect &r)

Переопределено из QLayoutItem::setGeometry().

См. также geometry().

void QLayout::setMenuBar(QWidget *widget)

Указывает менеджеру геометрии расположить widget с меню в верхней части parentWidget(), вне QWidget::contentsMargins(). Все дочерние виджеты размещаются ниже нижнего края панели меню.

См. также menuBar().

[pure virtual] QLayoutItem *QLayout::takeAt(int index)

Должно быть реализовано в подклассах для удаления элемента макета по индексу из макета и возвращения элемента. Если такого элемента нет, функция ничего не должна делать и вернуть 0. Элементы нумеруются последовательно, начиная с 0. Если элемент удален, другие элементы будут переиндексированы.

Следующий фрагмент кода демонстрирует безопасный способ удаления всех элементов из макета:

QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
    ...
    delete child;
}

См. также itemAt() и count().

void QLayout::update()

Обновляет макет для parentWidget().

Обычно вызывать это не нужно, так как оно автоматически вызывается в наиболее подходящее время.

См. также activate() и invalidate().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qlayout.html

Spec-Zone.ru

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