Класс QBoxLayout
Класс QBoxLayout выстраивает дочерние виджеты горизонтально или вертикально. Подробнее...
| Заголовок: | #include <QBoxLayout> |
| qmake: | QT += widgets |
| Наследует: | QLayout |
| Наследуется: |
Открытые типы
| 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 = ...) |
| 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 = ...) |
| void | setDirection(QBoxLayout::Direction direction) |
| void | setSpacing(int spacing) |
| void | setStretch(int index, int stretch) |
| bool | setStretchFactor(QWidget *widget, int stretch) |
| bool | setStretchFactor(QLayout *layout, int stretch) |
| int | spacing() const |
| 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 QSize | sizeHint() const override |
| virtual QLayoutItem * | takeAt(int index) override |
- 36 открытых функций, унаследованных от QLayout
- 34 открытых функций, унаследованных от QObject
- 17 открытых функций, унаследованных от QLayoutItem
Дополнительные унаследованные члены
- 2 свойства, унаследованные от QLayout
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 2 сигнала, унаследованные от QObject
- 1 открытая переменная, унаследованная от QObject
- 1 статический открытый член, унаследованный от QLayout
- 10 статических открытых членов, унаследованных от QObject
- 4 защищенных функции, унаследованные от QLayout
- 9 защищенных функций, унаследованных от QObject
- 2 защищенные переменные, унаследованные от QObject
Подробное описание
Класс QBoxLayout выстраивает дочерние виджеты горизонтально или вертикально.
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 и Управление макетами.
Документация по типам членов
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.
См. также direction().
[virtual] QBoxLayout::~QBoxLayout()
Уничтожает этот макет ящика.
Виджеты макета не уничтожаются.
[override virtual] void QBoxLayout::addItem(QLayoutItem *item)
Переопределено из QLayout::addItem().
void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)
Добавляет layout в конец ящика с коэффициентом растяжения stretch.
См. также insertLayout(), addItem() и addWidget().
void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)
Добавляет spacerItem в конец этого макета ящика.
Эта функция была добавлена в Qt 4.4.
См. также 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 = ...)
Добавляет 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().
QBoxLayout::Direction QBoxLayout::direction() const
Возвращает направление ящика. addWidget() и addSpacing() работают в этом направлении; растяжение происходит в этом направлении.
См. также setDirection(), QBoxLayout::Direction, addWidget() и addSpacing().
[override virtual] Qt::Orientations QBoxLayout::expandingDirections() const
Переопределено из QLayout::expandingDirections().
[override virtual] bool QBoxLayout::hasHeightForWidth() const
Переопределено из QLayoutItem::hasHeightForWidth().
[override virtual] int QBoxLayout::heightForWidth(int w) const
Переопределено из QLayoutItem::heightForWidth().
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 отрицательный, пространство добавляется в конец.
Эта функция была добавлена в Qt 4.4.
См. также 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 = ...)
Вставляет 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().
[override virtual] QSize QBoxLayout::maximumSize() const
Переопределено из QLayout::maximumSize().
[override virtual] int QBoxLayout::minimumHeightForWidth(int w) const
Переопределено из QLayoutItem::minimumHeightForWidth().
[override virtual] QSize QBoxLayout::minimumSize() const
Переопределено из QLayout::minimumSize().
void QBoxLayout::setDirection(QBoxLayout::Direction direction)
Устанавливает направление этого макета в direction.
См. также direction().
[override virtual] void QBoxLayout::setGeometry(const QRect &r)
Переопределено из QLayout::setGeometry().
void QBoxLayout::setSpacing(int spacing)
Переопределяет QLayout::setSpacing(). Устанавливает свойство интервала в spacing.
См. также QLayout::setSpacing() и spacing().
void QBoxLayout::setStretch(int index, int stretch)
Устанавливает коэффициент растяжения в позиции index в stretch.
Эта функция была добавлена в Qt 4.5.
См. также 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().
int QBoxLayout::spacing() const
Переопределяет QLayout::spacing(). Если свойство интервала валидно, возвращается это значение. Иначе, вычисляется и возвращается значение для свойства интервала. Поскольку интервалы макета виджета зависят от стиля, если родитель является виджетом, он запрашивает у стиля интервал (горизонтальный или вертикальный) макета. В противном случае родитель является макетом, и он запрашивает у родительского макета spacing().
См. также QLayout::spacing() и setSpacing().
int QBoxLayout::stretch(int index) const
Возвращает коэффициент растяжения в позиции index.
Эта функция была добавлена в Qt 4.5.
См. также setStretch().
[override virtual] QLayoutItem *QBoxLayout::takeAt(int index)
Переопределено из QLayout::takeAt().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qboxlayout.html