Класс QBoxLayout
Класс QBoxLayout выстраивает дочерние виджеты горизонтально или вертикально. Подробнее...
| Заголовок: | #include <QBoxLayout> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QLayout |
| Наследует: |
Открытые типы
| перечисление | Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop } |
Открытые функции
| QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr) | |
| виртуальный | ~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 |
Переопределённые открытые функции
| виртуальный void | addItem(QLayoutItem *item) override |
| виртуальный int | count() const override |
| виртуальный Qt::Orientations | expandingDirections() const override |
| виртуальный bool | hasHeightForWidth() const override |
| виртуальный int | heightForWidth(int w) const override |
| виртуальный void | invalidate() override |
| виртуальный QLayoutItem * | itemAt(int index) const override |
| виртуальный QSize | maximumSize() const override |
| виртуальный int | minimumHeightForWidth(int w) const override |
| виртуальный QSize | minimumSize() const override |
| виртуальный void | setGeometry(const QRect &r) override |
| виртуальный void | setSpacing(int spacing) override |
| виртуальный QSize | sizeHint() const override |
| виртуальный int | spacing() const override |
| виртуальный QLayoutItem * | takeAt(int index) override |
Подробное описание
QBoxLayout занимает всё предоставленное ему пространство (от родительской компоновки или от parentWidget()), делит его на ряд ячеек и заставляет каждый управляемый виджет заполнить одну ячейку.
Если ориентация QBoxLayout — Qt::Horizontal, ячейки располагаются в ряд с соответствующими размерами. Каждый виджет (или другая ячейка) получит не менее своего минимального размера и не более своего максимального размера. Любое лишнее пространство делится в соответствии с коэффициентами растяжения (подробнее об этом ниже).
Если ориентация 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 и Управление макетами.
Документация по типам членов
перечисление QBoxLayout::Direction
Этот тип используется для определения направления макета Box.
| Константа | Значение | Описание |
|---|---|---|
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()
Уничтожает этот макет Box.
Виджеты макета не уничтожаются.
[override virtual] void QBoxLayout::addItem(QLayoutItem *item)
Переопределяет: QLayout::addItem(QLayoutItem *item).
void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)
Добавляет layout в конец Box, со значением растяжения stretch.
См. также insertLayout(), addItem() и addWidget().
void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)
Добавляет spacerItem в конец этого макета Box.
См. также addSpacing() и addStretch().
void QBoxLayout::addSpacing(int size)
Добавляет нерастягиваемое пространство (a QSpacerItem) с размером size в конец этого макета Box. QBoxLayout предоставляет значения полей и отступов по умолчанию. Эта функция добавляет дополнительное пространство.
См. также insertSpacing(), addItem() и QSpacerItem.
void QBoxLayout::addStretch(int stretch = 0)
Добавляет растягиваемое пространство (a QSpacerItem) с нулевым минимальным размером и коэффициентом растяжения stretch в конец этого макета Box.
См. также insertStretch(), addItem() и QSpacerItem.
void QBoxLayout::addStrut(int size)
Ограничивает перпендикулярную размерность Box (например, высоту, если Box имеет направление LeftToRight) до минимального значения size. Другие ограничения могут увеличить лимит.
См. также addItem().
void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
Добавляет widget в конец этого макета Box, с коэффициентом растяжения 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
Возвращает направление Box. 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 в этот макет Box в позиции index. Если index отрицательно, элемент добавляется в конец.
См. также addItem(), insertWidget(), insertLayout(), insertStretch() и insertSpacing().
void QBoxLayout::insertLayout(int index, QLayout *layout, int stretch = 0)
Вставляет layout в позиции index со значением растяжения stretch. Если index отрицательно, макет добавляется в конец.
layout становится дочерним элементом макета Box.
См. также addLayout() и insertItem().
void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)
Вставляет spacerItem в позиции index с нулевым минимальным размером и коэффициентом растяжения. Если index отрицательно, пространство добавляется в конец.
См. также addSpacerItem(), insertStretch() и insertSpacing().
void QBoxLayout::insertSpacing(int index, int size)
Вставляет нерастягиваемое пространство (a QSpacerItem) в позиции index с размером size. Если index отрицательно, пространство добавляется в конец.
Макет Box имеет значения полей и отступов по умолчанию. Эта функция добавляет дополнительное пространство.
См. также 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(). Если свойство интервала имеет значение, возвращается это значение. В противном случае вычисляется значение свойства интервала и возвращается. Поскольку интервал макета в виджете зависит от стиля, если родительский элемент является виджетом, он запрашивает у стиля интервал макета (горизонтальный или вертикальный). В противном случае родительский элемент является макетом, и он запрашивает у родительского макета значение 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.2/qboxlayout.html