Qt 布局之 QBoxLayout Class

来源:互联网 发布:知乎搞笑 编辑:程序博客网 时间:2024/06/11 04:18

详细描述

QBoxLayout类水平或垂直地排列子部件。

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


如果QBoxLayout的方向是Qt::Horizontal,盒子以合适的大小放置在一行中。每个小部件(或其他框)将至少得到它的最小尺寸和最大尺寸。任何多余的空间都是根据拉伸因子来共享的(更多的是在下面)。

如果QBoxLayout的方向属性是Qt::Vertical,这些盒子以合适的尺寸被放置在一列中。

创建一个QBoxLayout最简单的方法是使用一个方便的类,例如:QHBoxLayout(用于Qt::Horizontal水平框)或者QVBoxLayout(用于Qt::Vertical垂直框)。你也可以直接使用QBoxLayout构造器,指定它的方向为 LeftToRight(左到右), RightToLeft(右到左), TopToBottom(上到下), 或者 BottomToTop(下到上)。

如果QBoxLayout不是顶层布局(也就是说它不是管理所有的部件区域和它的子部件)。在你要对它做点什么时你必须将它添加到它的父布局中。最常使用的添加一个布局是调用parentLayout->addLayout()。

完成这个操作后,你可以使用一下四个函数之一来将盒子添加到布局中:
*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。

相关成员

enum QBoxLayout::Direction
这个枚举类型是用于决定一个盒子布局的方向。
Constant ValueDescription
QBoxLayout::LeftToRight 0Horizontal from left to right.(水平从左到右)
QBoxLayout::RightToLeft 1Horizontal from right to left.(水平从右到左)
QBoxLayout::TopToBottom 2Vertical from top to bottom. (垂直从上到下)
QBoxLayout::BottomToTop 3Vertical from bottom to top.  (垂直从下到上)

相关成员函数(API)

QBoxLayout::QBoxLayout(Direction dir, QWidget * parent = 0)
以指定方向dir和父控件parent构造一个新的QBoxLayout对象。

QBoxLayout::~QBoxLayout()
销毁该盒子布局。
盒子布局中的控件并没有被销毁。
原创粉丝点击