Класс QBoxLayout
Класс QBoxLayout выстраивает дочерние виджеты по горизонтали или вертикали. Подробнее...
| Заголовок: | #include <QBoxLayout> |
| qmake: | QT += widgets |
| Наследует: | QLayout |
| Наследуется от: |
Общие типы
| перечисление | Direction { СлеваНаправо, СправаНалево, СверхуВниз, СнизуВверх } |
Общедоступные функции
| 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 |
- 37 общедоступных функций, унаследованных от QLayout
- 31 общедоступных функций, унаследованных от QObject
- 17 общедоступных функций, унаследованных от QLayoutItem
Статические общедоступные члены
| const QMetaObject | staticMetaObject |
- 1 статический общедоступный член, унаследованный от QLayout
- 9 статических общедоступных членов, унаследованных от QObject
Дополнительные наследуемые члены
- 2 свойства, унаследованные от QLayout
- 1 свойство, унаследованное от QObject
- 1 общедоступный слот, унаследованный от QObject
- 2 сигналов, унаследованных от QObject
- 4 защищённых функций, унаследованных от QLayout
- 9 защищённых функций, унаследованных от QObject
Подробное описание
Класс QBoxLayout выстраивает дочерние виджеты по горизонтали или вертикали.
QBoxLayout занимает всё предоставленное ему пространство (от родительского макета или от parentWidget()), разбивает его на ряд ячеек и размещает каждый управляемый виджет в отдельной ячейке.
Если ориентация QBoxLayout — Qt::Horizontal, ячейки размещаются в строке с соответствующими размерами. Каждый виджет (или другая ячейка) получит не меньше своего минимального размера и не больше максимального. Любое дополнительное пространство делится пропорционально коэффициентам растяжения (подробнее об этом ниже).
Если ориентация QBoxLayout — Qt::Vertical, ячейки размещаются в столбце с соответствующими размерами.
Самый простой способ создать QBoxLayout — использовать один из удобных классов, например QHBoxLayout (для Qt::Horizontal ячеек) или QVBoxLayout (для Qt::Vertical ячеек). Также можно использовать конструктор QBoxLayout напрямую, указав направление как СлеваНаправо, СправаНалево, СверхуВниз или СнизуВверх.
Если 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
Этот тип используется для определения направления макета в виде ячейки.
| Константа | Значение | Описание |
|---|---|---|
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 отрицательный, промежуток добавляется в конец.
Макет QBoxLayout имеет стандартные отступы и промежутки. Эта функция добавляет дополнительный промежуток.
См. также 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 в 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 валидно, возвращает его значение. В противном случае вычисляет и возвращает значение для свойства 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/qt-5.12/qboxlayout.html