0. 写在前面为什么想记录这篇博文⁉️
由于项目原因,需要 重新 使用Qt,距离接触Qt大概过了半年左右,当初也仅仅是接触一下,并没有深究,再次使用,发现对初始化工程十分的陌生,又得花费蛮多时间重新学习,希望通过这篇博文记录起来,加深记忆的同时方便以后复习。写博客的意义其实就是再此!记录📝 和分享👪 !
1. 使用的开发环境
我目前使用的开发环境是Windows + Qt Creator,当然你也可以使用其他的开发环境,比如Windows + Qt Creator、Linux(Ubuntu) + Qt Creator以及Windows + VS等,这里主要讲的使用Qt Creator开发时项目,由于Qt是跨平台的,不管你是用的是Windows系统还是Linux系统都是一样的。
2.新建初始化工程
Qt项目构成比较复杂,以工程的结构组成,为了更方便的构建初始化项目,Qt Creator提供一个可视化的新建项目向导,主要包括定义 项目的名称 、 选择项目的存储位置 、选择Kits 以及 项目继承的基类 。
项目的名称以及存储位置没啥好说的,主要解释一下Kit以及项目继承的基类。
2.1 Kit选择
Kit为构成套件,里面包含的主要是编译工具,比如我的Kit选择只有 MinGW 64-bits图2-1,这个主要是当初安装Qt时勾选的安装组件,我们可以勾选安装更多种类的组件适应不同环境下的开发图2-2,当然这也会占用更多的磁盘空间。
MinGW 指的是 Minimalist GNU for Windows , 简约版的Windows平台下使用的GNU套件,包含了编译器和标准库。对于 MSVC 则是Qt为微软(Microsoft,MS)开发的VC编译器,方便Qt可以使用宇宙最强Visual Studio进行Qt的开发,毕竟写C++的开发者大多使用VS,用户基数非常大。
2.2 工程继承的基类
Qt工程继承的基类有三种:QMainWindow、QWidget以及QDialog。 如何选择继承的基类需要了解这三者的区别:
- QMainWindow通常被用来做主应用程序界面,因为他提供了菜单条(menuBar)、工具条(maintoolBar)、状态条(statusBar)以及中心显示区(centralWidget),可以适应更复杂的操作要求。
- QWidget是所有用户界面的基类,我们可以在上面放置基本组件(按键(Button)、文本框(Label)等),QMainWindow的中心显示区就是一个Qwidget。
- QDialog为对话框基类,对话框通常用来做短期任务的操作界面,通常不用来作主界面。
3. 工程文件简述选择QMainWindow作为工程继承的基类
3.1 Demo.pro
Qt工程中会自动生成一个 .pro 文件, .pro 文件属于项目管理文件,定义了项目的基本信息,利用qmake生成对应的makefile文件,makefile文件是自动化编译脚本,适合用在复杂的工程编译当中,提高编译效率。
# Project created by QtCreator 2020-04-29T12:27:43
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Demo
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
CONFIG += c++11
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
###对注视和部分代码进行删减,有利于博文阅读
这里我们主要关注第一行:
QT += core gui
这里主要定义了引用的模块,core gui是必须的而且包含了大部分的内容,为什么这样做?主要是为了提供用户的灵活性,用户可以自行裁剪功能模块,提高编译速度。例如我们要引用Qtchart就需要在这句话下面添加:
QT += core gui
QT += charts
3.2 MainWindow窗口文件
在工程项目列表中,我们可以看到 mainwindow.h 、mainwindow.cpp 以及 mainwindow.ui 三个文件,
mainwindow.h 以及 mainwindow.cpp 主要是对 MainWindow类 相关成员的 定义 与 实现 ;mainwindow.ui 是对窗口的布局文件,是xml文件。
我们可能会产生一个疑问❓ ,前两者和后者是如何联系起来的。这里是通过引入另一个中间文件实现的: ui_mianwindow.h 。这个中间文件并不出现在工程列表中,是由xml文件生成的,我们也可以看到在 mainwindow.cpp 也有引用该头文件。
-
mainwindow.h、mianwindow.cpp : MainWindow类成员的定义与实现;
-
mainwindow.ui : 布局文件,可视化编辑界面;
-
ui_mainwindow.h : 通过布局文件生成的头文件,包括界面对象成员的定义、创建界面方法的实现以及命名空间的定义。
3.3 mian主函数
mian主函数是一个C++程序的入口,包含在 main.cpp 中, main.cpp 中定义了一个 QApplication 以及 MainWindow 。
- QApplication : 管理GUI程序的控制流和主要设置,也就说系统的管理中心,比如信号与槽的响应,打开文件的窗口选择以及调色板都是QApplication负责。
- MainWindow : 生成主窗口,是用户交互式操作的载体。