下面就以水平布局中加入水平间隔器为例(纯代码版)
一、添加头文件
首先需要包含以下三个头文件:
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QSpacerItem>
二、创建控件
构造具有首选宽度 w、首选高度 h、水平尺寸策略 hPolicy 和垂直尺寸策略 vPolicy 的间隔项
需要注意的是水平间隔器和垂直间隔器构造函数中第三四个参数的区别。
QHBoxLayout *p_hlayout;
QSpacerItem *hSpacer_left;
QSpacerItem *hSpacer_right;
p_hlayout = new QHBoxLayout();
p_hlayout->setContentsMargins(0,0,0,0);
p_hlayout->setSpacing(0);
//水平间隔器
hSpacer_left = new QSpacerItem(10,10,QSizePolicy::Expanding,QSizePolicy::Minimum);
hSpacer_right = new QSpacerItem(10,10,QSizePolicy::Expanding,QSizePolicy::Minimum);
//垂直间隔器
new QSpacerItem(10,10,QSizePolicy::Minimum,QSizePolicy::Expanding);
三、调整布局
在布局中加入以下三个控件:
p_hlayout->addSpacerItem(hSpacer_left); //最左边加水平间隔器
p_hlayout->addWidget(p_tabbar);
p_hlayout->addSpacerItem(hSpacer_right); //最右边加水平间隔器
最终就在水平布局中添加了两个水平间隔器,这样中间控件就会处于居中的位置。
四、其他方法
QHBoxLayout::addStretch(int Stretch = 0);
用法:以水平管理器为例,
布局管理器在添加完控件后使用函数addStretch(),则控件排布向左靠齐
布局管理器在添加控件前使用函数addStretch(),则控件排布向右靠齐
布局管理器在添加每个控件前后使用函数addStretch(),则控件居中排布
//添加最后向左靠齐
HBoxLayout1 = new QHBoxLayout();
HBoxLayout1->addWidget(btn1);
HBoxLayout1->addWidget(btn2);
HBoxLayout1->addWidget(btn3);
HBoxLayout1->addWidget(btn4);
HBoxLayout1->addStretch();
//这个就像在这一个水平布局管理器添加了一个个弹簧将各个控件向前挤,靠左对齐,根据弹簧位置,弹簧压缩,设置对齐方式。