Qt控件----空间间隔

空间间隔

一、QSpacerltem

空间间隔组(Spacers),如下图所示
在这里插入图片描述

(1) Horizontal Spacer:水平间隔
(2) Vertical Spacer:垂直间隔

QSpacerItem 继承 QLayoutItem。QSpacerItem 类在布局中提供空白(空间间隔)。所以QSpacerItem 是在布局中使用的。它包含 Horizontal Spacer(水平间隔)与 Vertical Spacer(垂直间隔)。

1. 控件简介

QSpacerItem 继承 QLayoutItem。QSpacerItem 类在布局中提供空白(空间间隔)。所以 QSpacerItem 是在布局中使用的。

2. 用法示例

例 32_qspaceritem,空间间隔(难度:一般),使用 4 个按钮,在垂直布局添加垂直间隔与按钮 1,在水平布局添加按钮 2~4 与水平间隔。简单的展示空间间隔布局的使用方法。在程序运行结果分析了空间间隔部分。

在新建例程中不要勾选“Generate form”,默认继承 QMainWindow 类即可。项目新建完成如下图。
在这里插入图片描述
在头文件“mainwindow.h”具体代码如下。

1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QMainWindow>
5 #include <QPushButton>
6 #include <QSpacerItem>
7 #include <QBoxLayout>
8
9 class MainWindow : public QMainWindow
10 {
11 Q_OBJECT
12
13 public:
14 MainWindow(QWidget *parent = nullptr);
15 ~MainWindow();
16
17 private:
18 /* 按钮对象数组 */
19 QPushButton *bt[4];
20 /* 垂直间隔 */
21 QSpacerItem *vSpacer;
22 /* 水平间隔 */
23 QSpacerItem *hSpacer;
24 /* 声明一个 widget 用来存放布局的内容 */
25 QWidget *widget;

在源文件“mainwindow.cpp”具体代码如下。

1 #include "mainwindow.h"
2
3 MainWindow::MainWindow(QWidget *parent)
4 : QMainWindow(parent)
5 {
6 /* 设置主窗体显示位置与大小 */
7 this->setGeometry(0, 0, 800, 480);
8
9 widget = new QWidget(this);
10 /* 居中 widget */
11 this->setCentralWidget(widget);
12
13 /* 实例化对象 */
14 vSpacer = new QSpacerItem(10, 10,
15 QSizePolicy::Minimum,
16 QSizePolicy::Expanding
17 );
18 hSpacer = new QSpacerItem(10, 10,
19 QSizePolicy::Expanding,
20 QSizePolicy::Minimum
21 );
22
23 vBoxLayout = new QVBoxLayout();
24 hBoxLayout = new QHBoxLayout();
25 mainLayout = new QHBoxLayout();
26
27 /* 在 vBoxLayout 添加垂直间隔 */
28 vBoxLayout->addSpacerItem(vSpacer);
29
30 QList <QString>list;
31 /* 将字符串值插入 list */
32 list<<"按钮 1"<<"按钮 2"<<"按钮 3"<<"按钮 4";
33 /* 用一个循环实例化 4 个按钮 */
34 for(int i = 0; i < 4 ; i++){
35 bt[i] = new QPushButton();
36 bt[i]->setText(list[i]);
37 if (i == 0){
38 /* 按钮 1,设置为 100*100 */
39 bt[i]->setFixedSize(100, 100);
40 /* 在 vBoxLayout 添加按钮 1 */
41 vBoxLayout->addWidget(bt[i]);
42 } else {
43 /* 按钮 2~4,设置为 60*60 */
44 bt[i]->setFixedSize(60, 60);
45 /* 在 hBoxLayout 添加按钮 2~4 */
46 hBoxLayout->addWidget(bt[i]);
47 }
48 }
49 /* 在 hBoxLayout 添加水平间隔 */
50 hBoxLayout->addSpacerItem(hSpacer);
51
52 /* 在主布局里添加垂直布局 */
53 mainLayout->addLayout(vBoxLayout);
54 /* 在主布局里添加水平布局 */
55 mainLayout->addLayout(hBoxLayout);
56
57 /* 设置部件间距 */
58 mainLayout->setSpacing(50);
59 /* 将主布局设置为 widget 的布局 */
60 widget->setLayout(mainLayout);
61
62 }
63
64 MainWindow::~MainWindow()
65 {
66 }

在源文件“main.cpp”具体代码新建项目时生成,无改动。

3. 运行效果

程序编译运行的结果如下,在垂直布局里添加了垂直空间间隔与按钮 1,在水平布局里添加了按钮 2~4 与水平空间间隔。

在这里插入图片描述
图解如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值