QBoxLayout 类

The QBoxLayout 类按水平或垂直排列子小部件。 更多...

头文件 #include <QBoxLayout>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QLayout
由以下类继承

QHBoxLayoutQVBoxLayout

公共类型

枚举Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop }

公共函数

QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)
virtual~QBoxLayout()
voidaddLayout(QLayout *layout, int stretch = 0)
voidaddSpacerItem(QSpacerItem *spacerItem)
voidaddSpacing(int size)
voidaddStretch(int stretch = 0)
voidaddStrut(int size)
voidaddWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
QBoxLayout::Directiondirection() const
voidinsertItem(int index, QLayoutItem *item)
voidinsertLayout(int index, QLayout *layout, int stretch = 0)
voidinsertSpacerItem(int index, QSpacerItem *spacerItem)
voidinsertSpacing(int index, int size)
voidinsertStretch(int index, int stretch = 0)
voidinsertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
voidsetDirection(QBoxLayout::Direction direction)
voidsetStretch(int index, int stretch)
boolsetStretchFactor(QWidget *widget, int stretch)
boolsetStretchFactor(QLayout *layout, int stretch)
intstretch(int index) const

重写公共函数

virtual voidaddItem(QLayoutItem *item) override
virtual intcount() const override
virtual Qt::OrientationsexpandingDirections() const override
virtual boolhasHeightForWidth() const override
virtual intheightForWidth(int w) const override
virtual voidinvalidate() override
virtual QLayoutItem *itemAt(int index) const override
virtual QSizemaximumSize() const override
virtual intminimumHeightForWidth(int w) const override
virtual QSizeminimumSize() const override
virtual voidsetGeometry(const QRect &r) override
virtual voidsetSpacing(int spacing) override
virtual QSizesizeHint() const override
virtual intspacing() const override
virtual QLayoutItem *takeAt(int index) override

详细描述

QBoxLayout 会根据其(从父布局或从父控件)获得的空间划分出一行盒,并使每个管理的控件填满一个盒子。

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 构造函数,指定其方向为 LeftToRightRightToLeftTopToBottomBottomToTop

如果 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()。

几乎总是建议使用 QVBoxLayoutQHBoxLayout 而不是 QBoxLayout,因为它们的构造函数更方便。

另请参阅QGridLayoutQStackedLayout 以及 布局管理

成员类型文档

枚举 QBoxLayout::Direction

此类型用于确定框布局的方向。

常量描述
QBoxLayout::LeftToRight0从左到右的水平。
QBoxLayout::RightToLeft1从右到左的水平。
QBoxLayout::TopToBottom2从上到下的垂直。
QBoxLayout::BottomToTop3从下到上的垂直。

成员函数文档

[显式] QBoxLayout::QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)

使用方向 dir 和父小部件 parent 构造一个新的 QBoxLayout。

布局直接设置为 parent 的顶级布局。每个小部件只能有一个顶级布局。它通过 QWidget::layout() 返回。

另请参阅direction() 和 QWidget::setLayout()。

[虚拟 noexcept] QBoxLayout::~QBoxLayout()

销毁此框布局。

布局的小部件不会被销毁。

[覆盖虚拟] void QBoxLayout::addItem(QLayoutItem *item)

重新实现: QLayout::addItem(QLayoutItem *item).

void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)

layout 添加到盒子的末尾,具有序列扩展因子 stretch

另请参阅insertLayoutaddItemaddWidget

void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)

spacerItem 添加到该盒布局的末尾。

另请参阅addSpacingaddStretch

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)

将盒子的垂直尺寸限制为 size 的最小值。其他约束可能增加这个限制。

另请参阅addItem

void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

widget 添加到盒状布局的末尾,具有 stretch 伸缩因子和 alignment 对齐方式。

伸缩因子只适用于 direction,相对于该 QBoxLayout 中的其他盒子和控件,伸缩因子越高,盒子生长得越多。

如果伸缩因子为 0 并且盒状布局中没有其他控件的伸缩因子大于 0,则空间将根据涉及的每个控件的 QWidget:sizePolicy() 进行分配。

对齐方式由 alignment 指定。默认对齐方式为 0,表示控件填充整个单元。

另请参阅insertWidget(),addItem(),addLayout(),addStretch(),addSpacing(),和 addStrut

[重写虚函数] int QBoxLayout::count() const

重新实现了:QLayout::count() const。

QBoxLayout::Direction QBoxLayout::direction() const

返回盒子的方向。在 addWidget() 和 addSpacing() 中工作,伸缩也在这方向上。

另请参阅setDirection(),QBoxLayout::DirectionaddWidget(),和 addSpacing

[重写虚函数] Qt::Orientations QBoxLayout::expandingDirections() const

重新实现了:QLayout::expandingDirections() const。

[重写虚拟] bool QBoxLayout::hasHeightForWidth() const

重写: QLayoutItem::hasHeightForWidth() const.

[重写虚拟] int QBoxLayout::heightForWidth(int w) const

重写: QLayoutItem::heightForWidth(int) const.

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)

index 位置插入 layout,具有扩展因子 stretch。如果 index 是负数,则布局将添加到末尾。

layout 成为盒状布局的子布局。

另请参阅 addLayout() 和 insertItem().

void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)

spacerItem 插入到 index 位置,具有零最小尺寸和扩展因子。如果 index 为负数,则空间将添加到末尾。

另请参阅 addSpacerItem(),insertStretch() 和 insertSpacing().

void QBoxLayout::insertSpacing(int index, int size)

index 位置插入一个不可扩展的空间(一个 QSpacerItem),其大小为 size。如果 index 是负数,则空间将添加到末尾。

盒状布局有默认边距和间距。此函数会添加额外的空间。

另请参阅 addSpacing(),insertItem() 和 QSpacerItem.

void QBoxLayout::insertStretch(int index, int stretch = 0)

index 位置插入一个可扩展的空间(一个 QSpacerItem),具有零最小尺寸和扩展因子 stretch。如果 index 是负数,则空间将添加到末尾。

另请参阅 addStretch(),insertItem() 和 QSpacerItem.

void QBoxLayout::insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

在位置 index 插入 widget,拉伸因子为 stretch,对齐方式为 alignment。如果 index 为负数,则部件被添加到末尾。

伸缩因子只适用于 direction,相对于该 QBoxLayout 中的其他盒子和控件,伸缩因子越高,盒子生长得越多。

如果伸缩因子为 0 并且盒状布局中没有其他控件的伸缩因子大于 0,则空间将根据涉及的每个控件的 QWidget:sizePolicy() 进行分配。

对齐方式由 alignment 指定。默认对齐方式为 0,表示控件填充整个单元。

另请参阅addWidget() 和 insertItem()。

[覆盖虚函数] void QBoxLayout::invalidate()

重新实现: QLayout::invalidate

重置缓存的信息。

[覆盖虚函数] QLayoutItem *QBoxLayout::itemAt(int index) const

重新实现: QLayout::itemAt(int index) const

[覆盖虚函数] QSize QBoxLayout::maximumSize() const

重新实现: QLayout::maximumSize() const

[覆盖虚函数] int QBoxLayout::minimumHeightForWidth(int w) const

重新实现: QLayoutItem::minimumHeightForWidth(int w) const

[覆盖虚函数] QSize QBoxLayout::minimumSize() const

重新实现: QLayout::minimumSize() const

void QBoxLayout::setDirection(QBoxLayout::Direction direction)

将此布局的方向设置为 direction

另请参阅direction

[覆盖虚函数] void QBoxLayout::setGeometry(const QRect &r)

重新实现: QLayout::setGeometry(const QRect &r)。

[覆盖虚函数] void QBoxLayout::setSpacing(int spacing)

重新实现属性访问函数: QLayout::spacing

重新实现 QLayout::setSpacing。设置间距属性为 spacing

另请参阅QLayout::setSpacing() 和 spacing

void QBoxLayout::setStretch(int index, int stretch)

将位置 index 的拉伸因子设置为 stretch

另请参阅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

[重写虚函数] QSize QBoxLayout::sizeHint() const

重实: QLayoutItem::sizeHint() const

[重写虚函数] int QBoxLayout::spacing() const

重新实现属性访问函数: QLayout::spacing

重实 QLayout::spacing。如果间距属性有效,则返回该值。否则,计算间距属性的值并返回。由于布局间距在控件中依赖于样式,如果父控件是控件,则查询布局的(水平或垂直)间距样式。否则,父控件是布局,它查询父布局的 spacing()。

另请参阅 QLayout::spacing() 和 setSpacing

int QBoxLayout::stretch(int index) const

返回位置 index 的拉伸因子。

另请参阅 setStretch

[重写虚函数] QLayoutItem *QBoxLayout::takeAt(int index)

重实: QLayout::takeAt(int index)。

© 2024 Qt公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU自由文档许可协议第1.3版 许可的。Qt及其相关商标为芬兰的Qt公司及其在全球的子公司和附属公司的商标。所有其他商标均为各自所有者的财产。