OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2542|回复: 0

《I.MX6U 嵌入式Qt开发指南》第七章 Qt控件 7.6 空间间隔

[复制链接]

1070

主题

1081

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4443
金钱
4443
注册时间
2019-5-8
在线时间
1199 小时
发表于 2022-7-29 10:19:09 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 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),如下图所示
image002.jpg
(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类即可。项目新建完成如下图。
image004.jpg
   在头文件“mainwindow.h”具体代码如下。
  1. mainwindow.h编程后的代码
  2. 1   #ifndef MAINWINDOW_H
  3. 2   #define MAINWINDOW_H
  4. 3
  5. 4   #include <QMainWindow>
  6. 5   #include <QPushButton>
  7. 6   #include <QSpacerItem>
  8. 7   #include <QBoxLayout>
  9. 8
  10. 9   class MainWindow : public QMainWindow
  11. 10  {
  12. 11      Q_OBJECT
  13. 12
  14. 13  public:
  15. 14      MainWindow(QWidget *parent = nullptr);
  16. 15      ~MainWindow();
  17. 16
  18. 17  private:
  19. 18      /* 按钮对象数组 */
  20. 19      QPushButton *bt[4];
  21. 20      /* 垂直间隔 */
  22. 21      QSpacerItem *vSpacer;
  23. 22      /* 水平间隔 */
  24. 23      QSpacerItem *hSpacer;
  25. 24      /* 声明一个widget用来存放布局的内容 */
  26. 25      QWidget *widget;
  27. 26      /* 主布局对象 */
  28. 27      QHBoxLayout *mainLayout;
  29. 28      /* 垂直布局对象 */
  30. 29      QVBoxLayout *vBoxLayout;
  31. 30      /* 水平布局对象 */
  32. 31      QHBoxLayout *hBoxLayout;
  33. 32
  34. 33  };
  35. 34  #endif // MAINWINDOW_H
复制代码
在源文件“mainwindow.cpp”具体代码如下。
  1. mainwindow.cpp编程后的代码
  2. 1   #include "mainwindow.h"
  3. 2
  4. 3   MainWindow::MainWindow(QWidget *parent)
  5. 4       : QMainWindow(parent)
  6. 5   {
  7. 6       /* 设置主窗体显示位置与大小 */
  8. 7       this->setGeometry(0, 0, 800, 480);
  9. 8
  10. 9       widget = new QWidget(this);
  11. 10      /* 居中widget */
  12. 11      this->setCentralWidget(widget);
  13. 12
  14. 13      /* 实例化对象 */
  15. 14      vSpacer  =  new QSpacerItem(10, 10,
  16. 15                                  QSizePolicy::Minimum,
  17. 16                                  QSizePolicy::Expanding
  18. 17                                  );
  19. 18      hSpacer  =  new QSpacerItem(10, 10,
  20. 19                                  QSizePolicy::Expanding,
  21. 20                                  QSizePolicy::Minimum
  22. 21                                  );
  23. 22
  24. 23      vBoxLayout = new QVBoxLayout();
  25. 24      hBoxLayout = new QHBoxLayout();
  26. 25      mainLayout = new QHBoxLayout();
  27. 26
  28. 27      /* 在vBoxLayout添加垂直间隔 */
  29. 28      vBoxLayout->addSpacerItem(vSpacer);
  30. 29
  31. 30      QList <QString>list;
  32. 31      /* 将字符串值插入list */
  33. 32      list<<"按钮1"<<"按钮2"<<"按钮3"<<"按钮4";
  34. 33      /* 用一个循环实例化4个按钮 */
  35. 34      for(int i = 0; i < 4 ; i++){
  36. 35          bt[i] = new QPushButton();
  37. 36          bt[i]->setText(list[i]);
  38. 37          if (i == 0){
  39. 38              /* 按钮1,设置为100*100 */
  40. 39              bt[i]->setFixedSize(100, 100);
  41. 40              /* 在vBoxLayout添加按钮1 */
  42. 41              vBoxLayout->addWidget(bt[i]);
  43. 42          } else {
  44. 43              /* 按钮2~4,设置为60*60 */
  45. 44              bt[i]->setFixedSize(60, 60);
  46. 45              /* 在hBoxLayout添加按钮2~4 */
  47. 46              hBoxLayout->addWidget(bt[i]);
  48. 47          }
  49. 48      }
  50. 49      /* 在hBoxLayout添加水平间隔 */
  51. 50      hBoxLayout->addSpacerItem(hSpacer);
  52. 51
  53. 52      /* 在主布局里添加垂直布局 */
  54. 53      mainLayout->addLayout(vBoxLayout);
  55. 54      /* 在主布局里添加水平布局 */
  56. 55      mainLayout->addLayout(hBoxLayout);
  57. 56
  58. 57      /* 设置部件间距 */
  59. 58      mainLayout->setSpacing(50);
  60. 59      /* 将主布局设置为widget的布局 */
  61. 60      widget->setLayout(mainLayout);
  62. 61
  63. 62  }
  64. 63
  65. 64  MainWindow::~MainWindow()
  66. 65  {
  67. 66  }
复制代码
在源文件“main.cpp”具体代码如下。由新建项目时生成,无改动。
  1. main.cpp编程后的代码
  2. 1   #include "mainwindow.h"
  3. 2
  4. 3   #include <QApplication>
  5. 4
  6. 5   int main(int argc, char *argv[])
  7. 6   {
  8. 7       QApplication a(argc, argv);
  9. 8       MainWindow w;
  10. 9       w.show();
  11. 10      return a.exec();
  12. 11  }
复制代码

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

图解如下:
image008.jpg





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-8 15:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表