Класс QBoxLayout
Класс QBoxLayout выстраивает дочерние виджеты горизонтально или вертикально. Подробнее...
| Заголовок: | #include <QBoxLayout> |
| qmake: | QT += widgets |
| Наследуется от: | QLayout |
| Наследуется в: |
Типы публичного доступа
| перечисление | 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) |
Переопределенные функции публичного доступа
- 36 функций публичного доступа, унаследованных от QLayout
- 31 функция публичного доступа, унаследованных от 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)
Добавляет непротягиваемое пространство (QSpacerItem) размером size в конец этого макета блока. QBoxLayout предоставляет значения отступа и интервала по умолчанию. Эта функция добавляет дополнительное пространство.
См. также insertSpacing(), addItem() и QSpacerItem.
END_OF_DOCUMENT_MARKERvoid 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.
Коэффициент растяжения применяется только в направлении направления 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 отрицателен, пространство добавляется в конец.
Макет имеет стандартные отступы и интервалы. Эта функция добавляет дополнительное пространство.
См. также 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 отрицателен, виджет добавляется в конец.
Коэффициент растяжения применяется только в направлении направления 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().
END_OF_DOCUMENT_MARKERbool QBoxLayout::setStretchFactor(QLayout *layout, int stretch)
Это перегруженный метод.
Устанавливает коэффициент растяжения для макета layout на значение stretch и возвращает true если layout найден в этом макете (не включая дочерние макеты); в противном случае возвращает false.
[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().
[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.6/qboxlayout.html