目录
代码⽰例: 创建⼀组左右排列的按钮.
Spacer
使⽤布局管理器的时候, 可能需要在控件之间, 添加⼀段空⽩. 就可以使⽤ QSpacerItem 来表⽰.
核⼼属性
属性 | 说明 |
---|---|
width | 宽度 |
height | 高度 |
hData | 水平方向的 sizePolicy - QSizePolicy::Ignored :忽略控件的尺寸,不对布局产生影响。- QSizePolicy::Minimum :控件的最小尺寸为固定值,布局时不会超过该值。- QSizePolicy::Maximum :控件的最大尺寸为固定值,布局时不会小于该值。- QSizePolicy::Preferred :控件的理想尺寸为固定值,布局时会尽量接近该值。- QSizePolicy::Expanding :控件的尺寸可以根据空间调整,尽可能占据更多空间。- QSizePolicy::Shrinking :控件的尺寸可以根据空间调整,尽可能缩小以适应空间。 |
vData | 垂直方向的 sizePolicy 选项同上。 |
上述属性在构造函数设置即可
代码⽰例: 创建⼀组左右排列的按钮.
1) 在界⾯上创建⼀个 QVBoxLayout , 并添加两个按钮
2) 直接运⾏程序, 可以看到两个按钮是紧挨着的


3) 在两个按钮中间添加⼀个 spacer
//创建 spacer 使两个按钮之间存在空白.QSpacerItem* spacer = new QSpacerItem(100, 200);
#include "widget.h"
#include "ui_widget.h"
#include <QHBoxLayout>
#include <QPushButton>
#include <QSpacerItem>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QHBoxLayout* layout = new QHBoxLayout();this->setLayout(layout);QPushButton* button1 = new QPushButton("按钮1");QPushButton* button2 = new QPushButton("按钮2");//创建 spacer 使两个按钮之间存在空白.QSpacerItem* spacer = new QSpacerItem(100, 200);// 当前是要把空白添加到两个按钮之间. 此处 add 的顺序就是把 addSpacerItem 放到中间了.layout->addWidget(button1);layout->addSpacerItem(spacer);layout->addWidget(button2);}Widget::~Widget()
{delete ui;
}
4) 运⾏程序, 观察代码效果. 可以看到两个按钮之间已经存在了间隔了.
调整 QSpacerItem 不同的尺⼨, 即可看到不同的间距

在 Qt Designer 中, 也可以直接给界⾯上添加 spacer.
上述的每个控件,都是”可扩展的’
每个控件都是对应Qt内置的一个类
咱们在代码中都可以基于这个类,继承出你自定义的子类~~
在这个自定义的子类中,又可以添加很多的属性和方法~~实现你自己的需求场景~~
还可以在子类中,把多个控件组合到一起~~