空间间隔组(Spacers)
空间间隔组(Spacers)
(1)Horizontal Spacer:水平间隔
(2)Vertical Spacer:垂直间隔
QSpacerItem
控件简介
-
继承关系:QSpacerItem 继承自 QLayoutItem
-
空间提供:QSpacerItem 类在布局中提供空白或空间间隔
-
布局中的应用:主要用于布局中,以创建水平或垂直的空白区域
-
水平间隔:提供 Horizontal Spacer,用于在水平方向上创建间隔
-
垂直间隔:提供 Vertical Spacer,用于在垂直方向上创建间隔
-
用法示例
-
使用 4 个按钮,在垂直布局添加垂直间隔与
按钮 1,在水平布局添加按钮 2~4 与水平间隔 -
新建例程中不要勾选“Generate form”,默认继承 QMainWindow 类即可
-
mainwindow.h
- 1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include
5 #include
6 #include
7 #include
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;
26 / 主布局对象 */
27 QHBoxLayout mainLayout;
28 / 垂直布局对象 */
29 QVBoxLayout vBoxLayout;
30 / 水平布局对象 */
31 QHBoxLayout *hBoxLayout;
32
33 };
34 #endif // MAINWINDOW_H
- 1 #ifndef MAINWINDOW_H
-
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 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,设置为 100100 /
39 bt[i]->setFixedSize(100, 100);
40 / 在 vBoxLayout 添加按钮 1 /
41 vBoxLayout->addWidget(bt[i]);
42 } else {
43 / 按钮 2~4,设置为 6060 /
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 }
- 1 #include “mainwindow.h”
-
main.cpp
- 由新建项目时生成,无改动
运行效果
-
在垂直布局里添加了垂直空间间隔与按钮 1,在水平布局里添加了按钮 2~4 与水平空间间隔
-
图解