项目模板

在选择Class information时,有三种基类可以选择,基类奠定了GUI的样式:

  • QMainWindow:主窗口类,主窗口具有主菜单栏、工具栏和状态栏。 类似于一般的应用程序的主窗口
  • QWidget:是可视界面类的基类,也就是说QMainWindow类也是由QWidget继承封装而来。所以QWidget要比QMainWindow功能少一些
  • QDialog:对话框类,建立一个对话框界面。比较少使用此项作为基类

在嵌入式里一般不需要标题栏,状态栏等,所以常用的是QWidget基类。

项目文件分类

  • *.pro 是项目管理文件,当加入了文件或者删除了文件, Qt Creator 会自动修改这个.pro 文件。有时候需要打开这个.pro 文件添加我们的设置项。
  • Header分组,这个节点下存放的是项目内所有的头文件*.h。
  • Source分组,这个节点下存放的是项目内的所有 C++源码文件*.cpp。
  • Forms分组,这个节点下是存放项目内所有界面文件.ui。 .ui 文件由 XML 语言描述组成,编译时会生成相应的 cpp 文件。

.pro文件

.pro文件是整个项目的管理文件,类似Android的manifest文件,主要分为以下几部分:

  1. QT += core gui--------------->支持的QT模块,根据需求添加
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  3. CONFIG += c++11-------------->设置使用C++的标准
  4. # You can make your code fail to compile if it uses deprecated APIs.
  5. # In order to do so, uncomment the following line.
  6. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
  7. -------------->设置三个目录下的文件
  8. SOURCES += \
  9. main.cpp \
  10. mainwindow.cpp
  11. HEADERS += \
  12. mainwindow.h
  13. FORMS += \
  14. mainwindow.ui
  15. ------------------->设置生成文件路径
  16. # Default rules for deployment.
  17. qnx: target.path = /tmp/$${TARGET}/bin
  18. else: unix:!android: target.path = /opt/$${TARGET}/bin
  19. !isEmpty(target.path): INSTALLS += target

.ui文件

ui文件是xml类型,描述界面组件,不能手动编辑,需要在designer中进行修改。
在编译时,会自动生成头文件,比如mainwindow.ui文件会编译生成**ui_mainwindow.h**头文件:

class Ui_MainWindow
{
    //...
};

//UI空间的类被Cpp文件引用
namespace Ui {
    class MainWindow: public Ui_MainWindow {};
}

这个文件会在mainwindow.cpp中进行引用,用于初始化ui成员,这样在调用show的时候会自动应用ui文件设计的界面:

#include "mainwindow.h"
#include "ui_mainwindow.h"//引用ui生成的头文件

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)//初始化ui成员
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}