布局类(04):【类】QBoxLayout[官翻]

QBoxLayout 类

QBoxLayout类将子窗口小部件水平或垂直排列。

Header:#include < QBoxLayout >
qmake:QT += widgets
Inherits:QLayout
Inherited By:QHBoxLayout ,QVBoxLayout

详细说明

QBoxLayout获取空间(从其父布局或parentWidget() ),将其划分为一行框,并使每个托管小部件填充一个框。

如果QBoxLayout的方向是Qt::Horizontal,则框将以适当的大小放置在一行中。每个小部件(或其他框)将至少获得其最小大小,最多获得其最大大小。任何多余的空间都将根据拉伸系数进行共享(下面将详细介绍)。

img

如果QBoxLayout的方向是Qt::Vertical,那么这些框将放置在一列中,同样具有合适的大小。

img

创建QBoxLayout最简单的方法是使用其中一个便利类,例如QHBoxLayout(对于Qt::Horizontal Box)或QVBoxLayout(对于Qt::Vertical Box)。也可以直接使用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,对于windows是11。间距默认与顶层布局的边距宽度相同,或与父布局相同。

要从布局中删除小部件,请调用removeWidget() 。在小部件上调用QWidget::hide() 也可以有效地将小部件从布局中移除,直到调用QWidget::show() 为止。

由于它们方便的构造函数,您几乎总是要使用QVBoxLayout和QHBoxLayout而不是QBoxLayout。

公共类型

enum Direction

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

ConstantValueDescription
QBoxLayout::LeftToRight0从左到右水平。
QBoxLayout::RightToLeft1从右到左水平。
QBoxLayout::TopToBottom2从上到下垂直。
QBoxLayout::BottomToTop3从下到上垂直。

公共函数

构造和析构

  • QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)
  • virtual ~QBoxLayout()

增加内容

  • void addLayout(QLayout *layout, int stretch = 0)
  • void insertLayout(int index, QLayout *layout, int stretch = 0)
  • void addSpacerItem(QSpacerItem *spacerItem)
  • void insertSpacerItem(int index, QSpacerItem *spacerItem)

不可伸展的空间

  • int spacing() const
  • void setSpacing(int spacing)
  • void addSpacing(int size)
  • void insertSpacing(int index, int size)

可伸展的空间

  • int stretch(int index) const
  • void setStretch(int index, int stretch)
  • void addStretch(int stretch = 0)
  • void insertStretch(int index, int stretch = 0)

最小尺寸的支柱

  • void addStrut(int size)

增加小部件

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

插入项目 QLayoutItem

  • void insertItem(int index, QLayoutItem *item)

方向

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

拉伸因子

  • bool setStretchFactor(QWidget *widget, int stretch)
  • bool setStretchFactor(QLayout *layout, int stretch)

重写的公共函数

增删查

  • virtual void addItem(QLayoutItem *item) override
  • virtual QLayoutItem * takeAt(int index) override
  • virtual QLayoutItem * itemAt(int index) const override
  • virtual int count() const override

特殊

  • virtual void invalidate() override 使此布局项中的任何缓存信息无效。

尺寸相关

  • virtual Qt::Orientations expandingDirections() const override

  • virtual bool hasHeightForWidth() const override

  • virtual int heightForWidth(int w) 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

总结

子类QVBoxLayout和QHBoxLayout 构造函数更加方便,所以基本不直接使用QBoxLayout。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值