QBoxLayout 类
The QBoxLayout 类按水平或垂直排列子小部件。 更多...
头文件 | #include <QBoxLayout> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承自 | QLayout |
由以下类继承 |
公共类型
枚举 | 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 = Qt::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 = Qt::Alignment()) |
void | setDirection(QBoxLayout::Direction direction) |
void | setStretch(int index, int stretch) |
bool | setStretchFactor(QWidget *widget, int stretch) |
bool | setStretchFactor(QLayout *layout, int stretch) |
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 void | setSpacing(int spacing) override |
virtual QSize | sizeHint() const override |
virtual int | spacing() const override |
virtual QLayoutItem * | takeAt(int index) override |
详细描述
QBoxLayout 会根据其(从父布局或从父控件)获得的空间划分出一行盒,并使每个管理的控件填满一个盒子。
如果 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(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。
另请参阅insertLayout,addItem 和 addWidget。
void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)
将 spacerItem 添加到该盒布局的末尾。
另请参阅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)
将盒子的垂直尺寸限制为 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::Direction,addWidget(),和 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公司及其在全球的子公司和附属公司的商标。所有其他商标均为各自所有者的财产。