目录
1. 前言
使用Qt之后你会慢慢地发现Qt框架设计的巧妙之处,跟随着Qt给的开发框架进行开发设计可以很容易很高效地完成应用开发,编写出的应用稳定性高、可靠性强。接下来就让我们跟随着Qt Creator的开发流程,快速地开发C++桌面应用。
2. 新建项目
打开Qt Creator,点击文件→新建文件或项目,如下图所示:
然后弹出新建项目对话框,如下图所示:
如上图所示,你会看到Application对应有8个选项,第一个是Qt Widgets应用,也就是Qt传统的使用C++语言开发的基于控件的应用,也是我们要选择的开发选项;第二个是Qt Console应用,是用来开发Qt控制台程序;第三、四个是基于Python语言开发的桌面应用,python语言也是Qt当前所支持的开发语言;第五到最后一个是基于QML语言为主要开发框架的应用开发。
我们选择第一个Qt Widgets Application,然后点击“Choose”,进入以下对话框:
给项目命名,并选择项目存放路径,点击“下一步”,进入以下对话框:
这里选择构建系统,默认我们选择qmake,qmake是Qt自带的构建系统。点击“下一步”,进入以下对话框:
既然我们创建的是带有界面的桌面应用,那界面是必不可少的。这里Qt给我们新建好了主界面,默认类名叫MainWindow,这个主界面包含三个文件,分别是mainwindow.h、mianwindow.cpp、mainwindow.ui,我们刚开始可能并不熟悉这三个文件的内容与意义,没有关系,按Qt默认的走,后面慢慢就明白了。
点击下一步,进入以下对话框:
如果你开发的应用设计多种语言,那这里就要关注了,我们初学者用不到,暂且不管,直接“下一步”,进入以下对话框:
这里就是我们安装时所选择的MinGW 32-bit编译工具,如果你安装了多个编译工具,就在这里选择。点击“下一步”,进入以下对话框:
这里和版本控制系统有关,所谓版本控制,就是你可以在本地或服务器上保存所有项目的版本,可以在任何时刻返回到任意一个版本。如果没有版本控制系统,你可能在本地存储建立像HelloWorld1.0、HelloWorld1.1、HelloWorld2.0这样的文件夹来保存项目的不同版本,而版本控制系统则简化了这些工作,版本控制系统还有其它功能,如版本间比较、多人系统合作开发等等。
默认设置,点击“完成”,Qt Creator生成HelloWorld项目,界面如下:
我们先不管代码内容,先点击左下角的编译配置选项,选择Release,然后点击绿色的三角形”运行“按钮或按快捷键Ctrl+R。
等待编译并运行,如果Qt安装没问题,新建项目顺利的话,稍等片刻你的电脑会出现主界面窗体,界面如下:
到此,恭喜你,新建项目成功。虽然这个窗体里空空如也,但这也是你迈向Qt的第一步!
3. 项目文件目录分析
如下图所示,这是我们新建项目的文件目录,从该目录可以看到,这个项目包含了一个HelloWorld.pro文件、一个头文件mainwindow.h、两个源文件main.cpp、mainwindow.cpp、一个界面文件mainwindow.ui。我们再理一理,就是一个HelloWorld.pro文件,一个main.cpp文件,剩下的就是新建项目过程中Qt默认给你新建的主界面的三个文件。
如果你初次接触Qt,那么你对.pro和.ui文件并不熟悉,不过不影响,这在之后的使用中你会越来越熟悉的。
这里我打开HelloWorld.pro文件给大家看看都有写什么内容,这些语句是qmake的语法,用来指定如何构建Qt项目。这里我们只大概的看看内容,并不深究.pro文件的语法。
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
我们一行行看看.pro文件里的语句。
QT += core gui表示在该项目中加入了Qt的core和gui模块,core是Qt的内核系统,gui是Qt的界面系统;
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets表示当前安装的Qt版本如果高于Qt4,则加入widgets控件模块;
DEFINES += QT_DEPRECATED_WARNINGS表示如果项目中使用了Qt已经废弃的特性或语句,则编译器会给出报警信息;
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000表示如果项目中使用了废弃的APIs,则编译器禁止编译代码。这句前面有个#,表示注释掉了这句(qmake语法中注释使用#),也就是使用了废弃的APIs还是可以编译的。
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
上面几行表示项目中加入的源文件、头文件和ui文件。
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
最后这几句表示的是默认的部署规则,和操作系统有关,我们不去深究。
接下来我们再看看main.cpp里的内容:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
在main.cpp里,最前面两行是头文件包含,包含了mainwindow.h和QApplication两个头文件,分别是主窗口的文件和Qt内部的核心应用文件。接着是C++的入口函数main(),里面先实例了一个QApplication变量a,又实例了MainWindow窗口的一个变量w,接着执行w.show()函数,将MainWindow窗口显示在屏幕上,最后main()函数返回a.exec(),开始进入Qt程序运行,将程序的控制权交给了Qt内核。
4. 总结
这篇讲了Qt如何新建项目并运行,分析了新建项目的文件组成,解释了每个文件的作用,最后分析了.pro文件和mian.cpp文件的语句。
下一篇将进入Qt应用的创作之旅。