Spec-Zone.ru › Qt 5.11

Класс QBoxLayout

Класс QBoxLayout выстраивает дочерние виджеты горизонтально или вертикально. Подробнее...

Заголовок: #include <QBoxLayout>
qmake: QT += widgets
Наследует: QLayout
Наследуется:

QHBoxLayout и QVBoxLayout

  • Список всех членов, включая унаследованные члены

Открытые типы

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()), делит его на ряд блоков и заставляет каждый управляемый виджет заполнять один блок.

Horizontal box layout with five child widgets

Если ориентация QBoxLayout равна Qt::Horizontal, блоки размещаются в ряд с соответствующими размерами. Каждый виджет (или другой блок) получит как минимум свой минимальный размер и как максимум свой максимальный размер. Любое лишнее пространство распределяется в соответствии с коэффициентами растяжения (подробнее об этом ниже).

Vertical box layout with five child widgets

Если ориентация 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API