Qt不仅仅是一个界面库,还是一个跨平台的c++应用程序开发框架。c++的STL中的大部分算法在Qt中都有实现,另外还有关于网络、数据库和多线程等等许多实用的库。
Qt是跨平台的,本系列的文章是以windows为例,在其他平台也是类似的。
下载安装包
Qt所有版本的安装包地址
http://download.qt.io/archive/qt/
在windows中,有VS版本和MinGW的版本,VS的版本需要已经安装VS,安装后Qt会集成到VS中。而MinGW版本包含了Qt的集成开发环境Qt Creator,也是很好用的。
由于MinGW中的gcc是从linux中移植过来的,所以使用MinGW的版本会在移植性方面比较好。
新建项目
安装好后,在开始菜单会有一些快捷方式
Qt Creator就是Qt的集成开发环境了,Assistant是帮助程序,Designer是用来设计图形界面的,Linguist是用来国际化翻译的,Qt 5.5 for Desktop是包含了Qt的一些命令的命令行界面。
其中Assistant和Designer也集成到了Qt Creator中,所以一般情况下使用Qt Creator就可以了。
Qt Creator的主界面主要有6个标签页
欢迎页面可以新建工程、打开工程。另外还有一些Qt自带的示例和教程。
编辑页面就是平时写代码的界面。
设计页面就是Qt Designer的界面,用来画图形界面。
Debug显然用来调试。
项目页面包含了项目的一些属性设置。
Analyze分析页面,用来分析程序性能。
帮助页面用来查看帮助。
我们先通过欢迎页面的New Project来新建一个工程
其中,Qt Widgets Application就是传统的桌面应用程序,Qt Quick Application是使用qml和c++的应用程序。我们新建一个Widgets应用。
输入名称和路径后,点下一步,可以选择工具包。这里还可以设置Debug和Release文件夹的位置
继续下一步
这里的基类有三种选择:QMainWindow 、 QDialog 和 QWidget
QMainWindow是标准的窗口,包含菜单栏 工具栏和状态栏等,而QDialog是对话框类型。
创建界面打钩后,可以使用Designer设计图形界面。
这里我们都使用默认。
下一步后,可以选择版本控制工具,这里也保持默认。点击完成就可以了。
Qt会进入到编辑界面,可以发现已经创建好了一些文件和代码。
编辑页面左边有项目和打开文档两个窗口,实际上它们的内容可以改,点击打开文档文字右边的小三角,可以更改显示的内容
右边是编辑窗口,它的上面有一些工具,其中选择符号按钮可以跳转到函数,十分方便。
Qt最左下角的四个按钮,它们和调试运行有关
最上面的可以选择构建方式是Debug模式还是Release模式,其中Debug包含了调试的信息,一般程序发布的时候采用Release模式。当我们打开了 多个项目的时候,这个按钮还可以选择构建哪个项目。
第二个三角形按钮是运行。
第三个是开始调试。
第四个是构建(不运行)。
现在我们点击第二个按钮就可以运行了。
Hello world
我们这里演示一个命令行界面的hello world
新建工程中,选择
这次生成的项目只有一个main.cpp, 还有一个cli1.pro,pro文件就是Qt的项目文件了。
我们增加两行代码,使用qDebug来输出信息、
修改后的main.cpp代码如下:
1 2 3 4 5 6 7 8 9 10 11 |
#include <QCoreApplication> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << "Hello world"; return a.exec(); } |
点击运行按钮之前,我们要设置运行哪个工程,不然的话会运行上面的y1。
点击左下角第一个按钮,选择cli1作为要构建的工程。
运行后就可以看到效果了
QCoreApplication是命令行界面的应用程序框架,在代码中先创建一个该类型的对象a,并把命令行参数传递进去。
最后return a.exec() 作用是进入主循环,在主循环中,不断等待接收事件并处理。
在最下面的状态栏可以查看输出的信息
查看4 编译输出,可以看到如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 |
09:46:06: 为项目cli1执行步骤 ... 09:46:06: 正在启动 "C:\Qt\Qt5.5.0\5.5\mingw492_32\bin\qmake.exe" Z:\cli1\cli1.pro -r -spec win32-g++ "CONFIG+=debug" 09:46:07: 进程"C:\Qt\Qt5.5.0\5.5\mingw492_32\bin\qmake.exe"正常退出。 09:46:07: 正在启动 "C:\Qt\Qt5.5.0\Tools\mingw492_32\bin\mingw32-make.exe" C:/Qt/Qt5.5.0/Tools/mingw492_32/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'Z:/build-cli1-Desktop_Qt_5_5_0_MinGW_32bit-Debug' g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_CORE_LIB -I..\cli1 -I. -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore -Idebug -IC:\Qt\Qt5.5.0\5.5\mingw492_32\mkspecs\win32-g++ -o debug\main.o ..\cli1\main.cpp g++ -Wl,-subsystem,console -mthreads -o debug\cli1.exe debug/main.o -LC:/Qt/Qt5.5.0/5.5/mingw492_32/lib -lQt5Cored mingw32-make[1]: Leaving directory 'Z:/build-cli1-Desktop_Qt_5_5_0_MinGW_32bit-Debug' 09:46:09: 进程"C:\Qt\Qt5.5.0\Tools\mingw492_32\bin\mingw32-make.exe"正常退出。 09:46:09: Elapsed time: 00:02. |
可以看到,编译的时候先使用了qmake cli1.pro 命令,qmake工具根据pro工程文件生成makefile,然后使用make进行编译。
我们查看工程文件cli1.pro,一般来说这个文件是由Qt Creator自动维护的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#------------------------------------------------- # # Project created by QtCreator 2015-07-19T09:20:54 # #------------------------------------------------- QT += core QT -= gui TARGET = cli1 CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp |
大致意思就是使用core程序框架而不使用gui 框架,因为这是命令行程序。
下面TARGET指定目标程序的名字
CONFIG += console指定命令行程序
SOURCES 指定了源代码文件