Spec-Zone.ru › Qt 6.0

Класс QBoxLayout

Класс QBoxLayout выстраивает дочерние виджеты горизонтально или вертикально. Подробнее...

Заголовок: #include <QBoxLayout>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследует: QLayout
Наследуется:

QHBoxLayout и QVBoxLayout

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

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

enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop }

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

QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)
virtual ~QBoxLayout()
void addLayout(QLayout *layout, int stretch = 0)
void addSpacerItem(QSpacerItem *spacerItem)
void addSpacing(int size)
void addStretch(int stretch = 0)
void addStrut(int size)
void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
QBoxLayout::Direction direction() const
void insertItem(int index, QLayoutItem *item)
void insertLayout(int index, QLayout *layout, int stretch = 0)
void insertSpacerItem(int index, QSpacerItem *spacerItem)
void insertSpacing(int index, int size)
void insertStretch(int index, int stretch = 0)
void insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
void setDirection(QBoxLayout::Direction direction)
void setStretch(int index, int stretch)
bool setStretchFactor(QWidget *widget, int stretch)
bool setStretchFactor(QLayout *layout, int stretch)
int stretch(int index) 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 w) const override
virtual void invalidate() override
virtual QLayoutItem * itemAt(int index) const override
virtual QSize maximumSize() const override
virtual int minimumHeightForWidth(int w) const override
virtual QSize minimumSize() const override
virtual void setGeometry(const QRect &r) override
virtual void setSpacing(int spacing) override
virtual QSize sizeHint() const override
virtual int spacing() const override
virtual QLayoutItem * takeAt(int index) override

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

QBoxLayout занимает предоставленное ему пространство (от родительского макета или от parentWidget()), делит его на ряд блоков и заставляет каждый управляемый виджет заполнять один блок.

Horizontal box layout with five child widgets

Если ориентация QBoxLayout — Qt::Horizontal, блоки размещаются в ряд с соответствующими размерами. Каждый виджет (или другой блок) получит как минимум свой минимальный размер и как максимум свой максимальный размер. Любое лишнее пространство распределяется в соответствии с коэффициентами растяжения (подробнее об этом ниже).

Vertical box layout with five child widgets

Если ориентация QBoxLayout — Qt::Vertical, блоки размещаются в столбец, опять же с соответствующими размерами.

Проще всего создать QBoxLayout, используя один из вспомогательных классов, например, QHBoxLayout (для блоков Qt::Horizontal) или QVBoxLayout (для блоков Qt::Vertical). Вы также можете использовать конструктор QBoxLayout напрямую, указав его направление как LeftToRight, RightToLeft, TopToBottom или BottomToTop.

Если QBoxLayout не является макетом верхнего уровня (т. е. он не управляет всей областью виджета и дочерними элементами), вы должны добавить его в родительский макет, прежде чем вы сможете что-либо с ним сделать. Обычный способ добавления макета — вызов parentLayout->addLayout().

После этого вы можете добавлять блоки в QBoxLayout, используя одну из четырех функций:

  • addWidget() для добавления виджета в QBoxLayout и установки коэффициента растяжения виджета. (Коэффициент растяжения находится вдоль ряда блоков.)
  • addSpacing() для создания пустого блока; это одна из функций, которые вы используете для создания красивых и просторных диалоговых окон. См. ниже способы установки полей.
  • addStretch() для создания пустого, растягиваемого блока.
  • addLayout() для добавления блока, содержащего другой QLayout, в ряд и установки коэффициента растяжения этого макета.

Используйте insertWidget(), insertSpacing(), insertStretch() или insertLayout() для вставки блока в указанную позицию в макете.

QBoxLayout также включает две ширины полей:

  • setContentsMargins() устанавливает ширину внешней границы с каждой стороны виджета. Это ширина зарезервированного пространства вдоль каждой из четырёх сторон QBoxLayout.
  • setSpacing() устанавливает ширину между соседними ящиками. (Вы можете использовать addSpacing(), чтобы получить больше места в определённом месте.)

Поля по умолчанию предоставляются стилем. Значение по умолчанию для полей, которое указывают большинство стилей Qt, составляет 9 для дочерних виджетов и 11 для окон. Отступ по умолчанию равен ширине полей для верхнего уровня макета или равен отступу родительского макета.

Чтобы удалить виджет из макета, вызовите removeWidget(). Вызов QWidget::hide() для виджета также эффективно удаляет виджет из макета до вызова QWidget::show().

Практически всегда следует использовать QVBoxLayout и QHBoxLayout, а не QBoxLayout из-за удобных конструкторов.

См. также QGridLayout, QStackedLayout и Управление макетами.

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

enum QBoxLayout::Direction

Этот тип используется для определения направления макета ящика.

Константа Значение Описание
QBoxLayout::LeftToRight 0 Горизонтально слева направо.
QBoxLayout::RightToLeft 1 Горизонтально справа налево.
QBoxLayout::TopToBottom 2 Вертикально сверху вниз.
QBoxLayout::BottomToTop 3 Вертикально снизу вверх.

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

QBoxLayout::QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)

Создаёт новый QBoxLayout с направлением dir и родительским виджетом parent.

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

См. также direction() и QWidget::setLayout().

[virtual] QBoxLayout::~QBoxLayout()

Удаляет этот макет ящика.

Виджеты макета не удаляются.

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

Переопределяет: QLayout::addItem(QLayoutItem *item).

void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)

Добавляет layout в конец ящика с коэффициентом растяжения stretch.

См. также insertLayout(), addItem() и addWidget().

void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)

Добавляет spacerItem в конец этого макета ящика.

См. также addSpacing() и addStretch().

void QBoxLayout::addSpacing(int size)

Добавляет нерастягиваемое пространство (QSpacerItem) размером size в конец этого макета ящика. QBoxLayout предоставляет отступы и межстрочные интервалы по умолчанию. Эта функция добавляет дополнительное пространство.

См. также insertSpacing(), addItem() и QSpacerItem.

void QBoxLayout::addStretch(int stretch = 0)

Добавляет растягиваемое пространство (QSpacerItem) с нулевым минимальным размером и коэффициентом растяжения stretch в конец этого макета ящика.

См. также insertStretch(), addItem() и QSpacerItem.

void QBoxLayout::addStrut(int size)

Ограничивает перпендикулярную размерность ящика (например, высоту, если ящик имеет направление LeftToRight) до минимума size. Другие ограничения могут увеличить предел.

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

void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

Добавляет widget в конец этого макета ящика с коэффициентом растяжения stretch и выравниванием alignment.

Коэффициент растяжения применяется только в направлении direction QBoxLayout и является относительным по отношению к другим ящикам и виджетам в этом QBoxLayout. Виджеты и ящики с более высокими коэффициентами растяжения растут сильнее.

Если коэффициент растяжения равен 0, и ничто другое в QBoxLayout не имеет коэффициента растяжения, большего нуля, пространство распределяется в соответствии с QWidget:sizePolicy() каждого участвующего виджета.

Выравнивание задаётся параметром alignment. Значение по умолчанию 0 означает, что виджет заполняет всю ячейку.

См. также insertWidget(), addItem(), addLayout(), addStretch(), addSpacing() и addStrut().

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

Переопределяет: QLayout::count() const.

QBoxLayout::Direction QBoxLayout::direction() const

Возвращает направление ящика. addWidget() и addSpacing() работают в этом направлении; растяжение растягивается в этом направлении.

См. также setDirection(), QBoxLayout::Direction, addWidget() и addSpacing().

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

Переопределяет: QLayout::expandingDirections() const.

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

Переопределяет: QLayoutItem::hasHeightForWidth() const.

[override virtual] int QBoxLayout::heightForWidth(int w) const

Переопределяет: QLayoutItem::heightForWidth(int) const.

void QBoxLayout::insertItem(int index, QLayoutItem *item)

Вставляет item в этот макет ящика в позиции index. Если index отрицательный, элемент добавляется в конец.

См. также addItem(), insertWidget(), insertLayout(), insertStretch() и insertSpacing().

void QBoxLayout::insertLayout(int index, QLayout *layout, int stretch = 0)

Вставляет layout в позиции index с коэффициентом растяжения stretch. Если index отрицательный, макет добавляется в конец.

layout становится дочерним элементом макета ящика.

См. также addLayout() и insertItem().

void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)

Вставляет spacerItem в позиции index с нулевым минимальным размером и коэффициентом растяжения. Если index отрицательный, пробел добавляется в конец.

См. также addSpacerItem(), insertStretch() и insertSpacing().

void QBoxLayout::insertSpacing(int index, int size)

Вставляет нерастягиваемое пространство (QSpacerItem) в позиции index размером size. Если index отрицательный, пробел добавляется в конец.

Макет ящика имеет отступы и межстрочные интервалы по умолчанию. Эта функция добавляет дополнительное пространство.

См. также addSpacing(), insertItem() и QSpacerItem.

void QBoxLayout::insertStretch(int index, int stretch = 0)

Вставляет растяжимое пространство (элемент QSpacerItem) в позицию index с нулевым минимальным размером и коэффициентом растяжения stretch. Если index отрицателен, пространство добавляется в конец.

См. также addStretch(), insertItem() и QSpacerItem.

void QBoxLayout::insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

Вставляет widget в позицию index с коэффициентом растяжения stretch и выравниванием alignment. Если index отрицателен, виджет добавляется в конец.

Коэффициент растяжения применяется только в направлении direction QBoxLayout и относится к другим блокам и виджетам в этом QBoxLayout. Виджеты и блоки с более высокими коэффициентами растяжения растут больше.

Если коэффициент растяжения равен 0, и ничего другого в QBoxLayout не имеет коэффициента растяжения больше нуля, пространство распределяется в соответствии с QWidget:sizePolicy() каждого вовлеченного виджета.

Выравнивание задаётся параметром alignment. По умолчанию выравнивание равно 0, что означает, что виджет заполняет всю ячейку.

См. также addWidget() и insertItem().

[override virtual] void QBoxLayout::invalidate()

Переопределяет: QLayout::invalidate().

Сбрасывает кэшированную информацию.

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

Переопределяет: QLayout::itemAt(int index) const.

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

Переопределяет: QLayout::maximumSize() const.

[override virtual] int QBoxLayout::minimumHeightForWidth(int w) const

Переопределяет: QLayoutItem::minimumHeightForWidth(int w) const.

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

Переопределяет: QLayout::minimumSize() const.

void QBoxLayout::setDirection(QBoxLayout::Direction direction)

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

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

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

Переопределяет: QLayout::setGeometry(const QRect &r).

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

Переопределяет функцию доступа к свойству: QLayout::spacing.

Переопределяет QLayout::setSpacing(). Устанавливает свойство отступа на spacing.

См. также QLayout::setSpacing() и spacing().

void QBoxLayout::setStretch(int index, int stretch)

Устанавливает коэффициент растяжения в позиции index на stretch.

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

bool QBoxLayout::setStretchFactor(QWidget *widget, int stretch)

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

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

bool QBoxLayout::setStretchFactor(QLayout *layout, int stretch)

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

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

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

Переопределяет: QLayoutItem::sizeHint() const.

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

Переопределяет функцию доступа к свойству: QLayout::spacing.

Переопределяет QLayout::spacing(). Если свойство отступа имеет значение, оно возвращается. В противном случае вычисляется значение свойства отступа и возвращается. Так как отступ макета в виджете зависит от стиля, если родитель — виджет, запрашивается у стиля (горизонтальный или вертикальный) отступ макета. В противном случае, родитель — макет, и запрашивается отступ у родительского макета.

См. также QLayout::spacing() и setSpacing().

int QBoxLayout::stretch(int index) const

Возвращает коэффициент растяжения в позиции index.

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

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

Переопределяет: QLayout::takeAt(int index).

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

Spec-Zone.ru

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