Класс QBoxLayout
Класс QBoxLayout выравнивает дочерние виджеты по горизонтали или вертикали. Подробнее...
| Заголовок: | #include <QBoxLayout> |
| qmake: | QT += widgets |
| Наследует: | QLayout |
| Наследуется: |
Открытые типы
| enum | Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop } |
Открытые функции
| QBoxLayout(Direction dir, QWidget *parent = Q_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()) |
| 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(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) |
| virtual int | count() const |
| virtual Qt::Orientations | expandingDirections() const |
| virtual bool | hasHeightForWidth() const |
| virtual int | heightForWidth(int w) const |
| virtual void | invalidate() |
| virtual QLayoutItem * | itemAt(int index) const |
| virtual QSize | maximumSize() const |
| virtual int | minimumHeightForWidth(int w) const |
| virtual QSize | minimumSize() const |
| virtual void | setGeometry(const QRect &r) |
| virtual QSize | sizeHint() const |
| virtual QLayoutItem * | takeAt(int index) |
- 36 открытых функций, унаследованных от QLayout
- 32 открытых функций, унаследованных от QObject
- 17 открытых функций, унаследованных от QLayoutItem
Дополнительные унаследованные члены
- 2 свойства, унаследованные от QLayout
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 2 сигнала, унаследованные от QObject
- 1 статический открытый член, унаследованный от QLayout
- 11 статических открытых членов, унаследованных от QObject
- 4 защищённых функций, унаследованных от QLayout
- 9 защищённых функций, унаследованных от 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 и Управление макетами.
Документация по типам элементов-члена
перечисление QBoxLayout::Direction
Этот тип используется для определения направления макета ящика.
| Постоянная | Значение | Описание |
|---|---|---|
QBoxLayout::LeftToRight |
0 |
Горизонтальное от левого к правому. |
QBoxLayout::RightToLeft |
1 |
Горизонтальное от правого к левому. |
QBoxLayout::TopToBottom |
2 |
Вертикальное сверху вниз. |
QBoxLayout::BottomToTop |
3 |
Вертикальное снизу вверх. |
Документация по документации функций-членов
QBoxLayout::QBoxLayout(Direction dir, QWidget *parent = Q_NULLPTR)
Создаёт новый QBoxLayout с направлением dir и родительским виджетом parent.
См. также direction().
QBoxLayout::~QBoxLayout()
Уничтожает этот макет ящика.
Виджеты макета не уничтожаются.
[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)
Добавляет нерастягиваемое пространство (a QSpacerItem) размером size в конец этого макета ящика. QBoxLayout предоставляет отступ и расстояние по умолчанию. Эта функция добавляет дополнительное пространство.
См. также insertSpacing(), addItem() и QSpacerItem.
void QBoxLayout::addStretch(int stretch = 0)
Добавляет растягиваемое пространство (a 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().
[virtual] int QBoxLayout::count() const
Переопределено из QLayout::count().
Direction QBoxLayout::direction() const
Возвращает направление ящика. addWidget() и addSpacing() работают в этом направлении; растяжение растягивается в этом направлении.
См. также setDirection(), QBoxLayout::Direction, addWidget() и addSpacing().
[virtual] Qt::Orientations QBoxLayout::expandingDirections() const
Переопределено из QLayoutItem::expandingDirections().
[virtual] bool QBoxLayout::hasHeightForWidth() const
Переопределено из QLayoutItem::hasHeightForWidth().
[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 = Qt::Alignment())
Вставляет widget в позицию index с коэффициентом растяжения stretch и выравниванием alignment. Если index отрицательное, виджет добавляется в конец.
Коэффициент растяжения применяется только в направлении direction макета QBoxLayout и относится к другим элементам и виджетам в этом QBoxLayout. Виджеты и элементы с более высокими коэффициентами растяжения будут расти больше.
Если коэффициент растяжения равен 0 и ни у чего другого в QBoxLayout нет коэффициента растяжения, превышающего ноль, то пространство распределяется в соответствии со свойством QWidget:sizePolicy() каждого вовлеченного виджета.
Выравнивание задаётся параметром alignment. Значение по умолчанию 0 означает, что виджет заполняет всю ячейку.
См. также addWidget() и insertItem().
[virtual] void QBoxLayout::invalidate()
Переопределяет QLayoutItem::invalidate().
Сбрасывает кэшированные данные.
[virtual] QLayoutItem *QBoxLayout::itemAt(int index) const
Переопределяет QLayout::itemAt().
[virtual] QSize QBoxLayout::maximumSize() const
Переопределяет QLayoutItem::maximumSize().
[virtual] int QBoxLayout::minimumHeightForWidth(int w) const
Переопределяет QLayoutItem::minimumHeightForWidth().
[virtual] QSize QBoxLayout::minimumSize() const
Переопределяет QLayoutItem::minimumSize().
void QBoxLayout::setDirection(Direction direction)
Устанавливает направление макета на direction.
См. также direction().
[virtual] void QBoxLayout::setGeometry(const QRect &r)
Переопределяет QLayoutItem::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.
[virtual] QSize QBoxLayout::sizeHint() const
Переопределяет QLayoutItem::sizeHint().
int QBoxLayout::spacing() const
Переопределяет QLayout::spacing(). Если свойство интервала валидно, возвращается его значение. В противном случае вычисляется значение свойства интервала и возвращается. Так как интервалы макета виджета зависят от стиля, если родительский элемент является виджетом, то запрашивается стиль для (горизонтального или вертикального) интервала макета. В противном случае родительским элементом является макет, и запрашивается интервал родительского макета.
См. также QLayout::spacing() и setSpacing().
int QBoxLayout::stretch(int index) const
Возвращает коэффициент растяжения в позиции index.
Функция добавлена в Qt 4.5.
См. также setStretch().
[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.9/qboxlayout.html