本帖最后由 正点原子运营 于 2022-7-29 10:18 编辑
1)实验平台:正点原子阿尔法Linux开发板
2) 章节摘自【正点原子】《I.MX6U 嵌入式Qt开发指南》
3)购买链接:https://detail.tmall.com/item.htm?id=609033604451
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子阿尔法Linux交流群:1027879335
第七章 Qt控件
7.6 空间间隔空间间隔组(Spacers),如下图所示 (1) Horizontal Spacer:水平间隔 (2) Vertical Spacer:垂直间隔 QSpacerItem继承QLayoutItem。QSpacerItem类在布局中提供空白(空间间隔)。所以QSpacerItem是在布局中使用的。它包含Horizontal Spacer(水平间隔)与Vertical Spacer(垂直间隔)。 7.6.1 QSpacerItem
7.6.1.1 控件简介QSpacerItem继承QLayoutItem。QSpacerItem类在布局中提供空白(空间间隔)。所以QSpacerItem是在布局中使用的。
7.6.1.2 用法示例例32_qspaceritem,空间间隔(难度:一般),使用4个按钮,在垂直布局添加垂直间隔与按钮1,在水平布局添加按钮2~4与水平间隔。简单的展示空间间隔布局的使用方法。在程序运行结果分析了空间间隔部分。 在新建例程中不要勾选“Generate form”,默认继承QMainWindow类即可。项目新建完成如下图。 在头文件“mainwindow.h”具体代码如下。 - 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;
- 26 /* 主布局对象 */
- 27 QHBoxLayout *mainLayout;
- 28 /* 垂直布局对象 */
- 29 QVBoxLayout *vBoxLayout;
- 30 /* 水平布局对象 */
- 31 QHBoxLayout *hBoxLayout;
- 32
- 33 };
- 34 #endif // MAINWINDOW_H
复制代码在源文件“mainwindow.cpp”具体代码如下。 - 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”具体代码如下。由新建项目时生成,无改动。 - main.cpp编程后的代码
- 1 #include "mainwindow.h"
- 2
- 3 #include <QApplication>
- 4
- 5 int main(int argc, char *argv[])
- 6 {
- 7 QApplication a(argc, argv);
- 8 MainWindow w;
- 9 w.show();
- 10 return a.exec();
- 11 }
复制代码
7.6.1.3 运行效果 程序编译运行的结果如下,在垂直布局里添加了垂直空间间隔与按钮1,在水平布局里添加了按钮2~4与水平空间间隔。
图解如下:
|