1. 背景介绍
Qt是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者丰富的图形用户界面所需的所有功能。而且,Qt很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。相对于后面那些技术,Qt的优势在于
1. 跨平台,同样一份代码,不需要修改即可从桌面移植至移动端,从windows移植至android
2. 开源,Qt是开源软件,版本升级较快,因此不存在技术落后问题(相对于MFC而言)
3. Qt框架简单易用,开发效率高(Qt采用QML脚本和C++代码混合编程的方式,开发产品速度很快)
4. Qt图形界面支持较好(许多图形控件,比如仪表盘,距离标尺等都有现成控件可用,非常方便)
Qt分为商业版和开源版两个版本,本文讨论的Qt指的都是开源版。
2. Qt Creator介绍
Qt Creator是一个IDE环境,既可以开发Qt程序,也可以用来开发普通的C,C++程序,类似于微软的VS系列,现在最新版本是3.5.0
Qt Creator是Qt程序原生的开发环境,相比较于vs的庞大,Qt Creator显得轻量很多,而且能够跨平台运行,以及交叉编译。Qt Creator集成了Qt Designer(一个界面设计工具),Qt Assistant(用来查看帮助), Qt Linguist(多国语言支持), 图形化的GDB,以及qmake构建工具。使用Qt Creator可以方便的编译Qt程序,连接Qt支持库,以及查看教程,打开和运行Qt官方程序代码等。
上图就是QtCreator的运行界面,由图可见,界面可以分为4部分,最上方的为菜单栏,包括文件,工程的打开,新建,保存,关闭;项目工程的构建,链接,运行,调试,分析等功能。左侧的视图栏从不同的视图显示来显示同一个工程,包括欢迎界面(显示Qt自带工程例子,视频教程),编辑(编辑工程代码),设计(显示设计视图),Debug(调试模式),项目(工程项目的设置),Analyse(分析视图),帮助(Qt的帮助界面)。左下方为工具栏,包括4个按钮,分别代表项目状态(Debug还是Release),项目运行,调试,设置。整个界面中心的那部分就是Qt Creator打开工程的主界面了,可以根据左侧视图栏中的选择,分别显示Qt例程,工程代码,设计界面等。上图中显示的是Qt自带的Example
3. 下载软件
Qt开发中所用到的所有软件,工具都可以从Qt官网下载。
http://www.qt.io/
官网上的软件最新最全,而且都有分门别类的组织,下载起来较方便。
官网截图
使用Qt框架开发程序,需要下载如下安装包
1. Qt框架库,根据程序运行的环境分为windows和android以及RT
从图中可以看出,windows版本分为64位和32位,编译器可以使用VS也可以使用MinGW,在这里我推荐使用MinGW,这是一款Windows系统下的开源编译器,和Qt一样,更新较快。
如果程序需要移植到android系统上,这里需要下载Android版本。
2. Qt Creator
之前已经介绍过,QtCreator是一款Qt程序开发的IDE环境,包括代码的编译,连接,执行和调试。
大家可以根据自己系统选择对应的版本下载,我是在windows 7 上开发,因此我下载的是第一个。
以上两个安装程序包的下载地址为
http://www.qt.io/download-open-source/
这也是Qt的官方下载地址,所有最新最全的Qt开发相关的软件、工具都可以在这里下载。
如果只是开发桌面程序,那么上面两个安装包下载完就没事了,但是如果需要开发android程序,那么还需要下载android的开发工具,有如下4个
1. JDK,android开发离不开JDK环境,因此必须下载
http://www.oracle.com/technetwork/java/javase/downloads/index.html
官网下载
2. Android SDK,android程序的开发工具
http://pan.baidu.com/s/1i3eUFDb
由于Google被封锁,因此从上述网盘下载
3. Android NDK, 由于Qt采用C++语言开发,因此需要AndroidNDK工具
http://pan.baidu.com/s/1jG7Yacm
由于Google被封锁,因此从上述的网盘下载
4. Ant脚本, Android程序的打包工具
http://ant.apache.org/bindownload.cgi
官网下载
至此,android平台的Qt开发工具已经全部下载完成了。
4. 设置步骤
1. 打开Qt Creator, 菜单栏选择工具->选项
2. 在弹出的选项菜单中选择Android
3. 将上一步下载的JDK,SDK,NDK,Ant下载路径分别填入对应方框内。
勾选自动创建工具链,这样QtCreator可以自动识别已经安装的android平台,虚拟机区域可以显示已创建的android虚拟机。如果使用真机调试,则可以不用创建,我推荐大家使用真机调试,因为虚拟机速度较慢,且无法发现真机运行过程中出现的问题。
4. 完成选项Android部分设置后,我们还需要设置一下构建和运行环境。
Qt Creator已经自动识别出了所安装的套件,为了演示如何设置,我新建了两个套件,分别取名为qtandroid和qtdesktop,代表android构建平台和桌面构建平台
qtandroid设置界面
qtdesktop设置界面
至此,我们已经完成了跨平台开发的所有设置,下面即将编写一个程序,代码不做任何修改,分别使用qtdesktop和qtandroid构建,在桌面和android手机上运行。
5. DMI测试版
DMI测试版是我根据有轨电车DMI软件简化的一个测试版本,运行界面包括4部分,分别是距离标尺,仪表盘,声音按钮,操作图标。
下面我将采用同一份代码,使用Qt Creator分别编译出桌面版和Android版两个版本。
1. 选择文件->新建
在弹出的对话框中选择Qt Quick Application
2. 完成创建后,在左侧的文件树中选择MainForm.ui.qml,这就是主界面文件
3. 我们选择设计视图,可以看到Qt5.5自带的控件,包括仪表盘,距离标尺等。
如果程序简单的话,可以直接将控件拖动到主界面上,但是因为我现在开发的有轨电车DMI涉及一些操作逻辑,因此我决定采用模块化思想,一个控件对应一个xml文件,这样封装后,代码看起来比较清晰,工程结构也显得较为合理,后续如果需要替换控件样式,或者增加新功能的话,开发起来也会比较方便。
4. 新建一个xml文件,代表仪表盘
这是仪表盘的设计视图
我们切换至代码视图,设置一些必要的属性,包括指针样式,最小刻度,仪表盘风格,背景颜色等,除此之外,仪表盘的指针逻辑也是在这里编写代码,比如我这里设置触摸一次,转10个刻度。
5. 以此类推,完成距离标尺和声音按钮的模块化创建
这是距离标尺
这是声音按钮
完成控件的设计视图后,在代码视图中编写相应的逻辑,这里我编写了距离标尺的颜色逻辑,标尺可以根据刻度的大小,分别用不同颜色显示。声音按钮则可以根据按下或者弹起,分别播放声音和停止播放,图标也相应的发生变化,默认值如图所示,为不播放声音。
6. 将所有模块化控件,拖动到主界面上,并且添加相应的资源,比如图标,声音等,至此程序的开发就全部完成了。
图中显示的就是DMI的运行界面图了。
7. 点击运行,即可看到桌面版程序运行效果
可以点击仪表盘,距离标尺,声音按钮,DMI界面上相应的控件会发生变化,声音也会开始播放。
距离标尺根据刻度以不同颜色显示,仪表盘可以转动指定刻度,声音按钮切换到播放图标。
下面我们用同一套代码,不做更改,编译出一个Android版本DMI。
8. 构建套件中选择qtandroid
再次点击运行
跳出对话框,选择设备,第一个是真实手机,第二个是之前我们创建的虚拟机,这里我选择真机。
华为手机上的运行效果
来张合影
Qt跨平台开发环境搭建到此就全部结束了,谢谢收看!