一、Qt简介
Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。
Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,对于不了解 C++ 的读者,我建议先阅读《C语言教程》,再阅读《C++教程》。C++ 是在C语言的基础上发展起来的,学完C语言就学了 C++ 的一半了。
Qt 还存在 Python、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。
Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。
Qt 图标(Logo)
Qt 可以做什么?
Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。
Qt 是应用程序开发的一站式解决方案,有了 Qt,你就可以高枕无忧了!Qt 本身包含的模块也日益丰富, 一直有新模块和第三方模块加入进来。
大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,例如驱动开发,它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库。
1997年,Qt 被用来开发 Linux 桌面环境 KDE,大获成功,使 Qt 成为 Linux 环境下开发 C++ GUI 程序的事实标准。
下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 等。
Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。
Qt 虽然也支持手机操作系统,但是由于 Android 本身已经有 Java 和 Kotlin,iOS 本身已经有 Objective-C 和 Swift,所以 Qt 在移动端的市场份额几乎可以忽略。
总起来说,Qt 主要用于桌面程序开发和嵌入式开发。
Qt 和智能手机
Qt 目前支持主流的 Android、iOS、WinPhone 等智能机操作系统。MeeGo 是基于 Qt 开发的操作系统,由于被诺基亚抛弃了, 只剩一代绝版诺基亚 N9 手机。
诺基亚手机部门出售给微软之后,大部分诺基亚手机系统开发人员都被遣散了。
- 原来诺基亚的一部分人成立新的 Jolla(卓蓝)公司,发布了 MeeGo 的衍生版智能手机系统 Sailfish(旗鱼),相应的手机和平板也发布开卖了。
- 另一拨人投靠了 Tizen(泰泽),Tizen 是英特尔和三星力推的智能手机系统,该系统整合了 Limo 和 MeeGo,因为 MeeGo 系统被诺基亚抛弃,英特尔其实是被出卖了,所以只能联合三星重造智能手机系统 Tizen。
目前基于 Tizen 的首款手机三星 Z1 在印度上市了。在 Tizen 阵营,国内有中兴、百度涉及了。Qt 开源项目里也有 Qt for Tizen 版本,有兴趣的可以去搜搜。
Qt 公司有专门针对移动开发的商业版本,20 欧元或 25 美元一个月。不做商业可以无视这个,用开源版本也是可以开发如 Android、iOS、WinPhone 应用的。
本教程关注的是传统桌面操作系统开发的,移动开发可以参考 Qt 官方的文档。
Qt 的辛酸史
说到 Qt 的发展史,那真是一波三折,几经卖身。
Qt 最早是 1991 年由挪威的 Eirik Chambe-Eng 和 Haavard Nord 开发的, 他们随后于 1994 年 3 月 4 号正式成立奇趣科技公司(Trolltech)。Qt 原本是商业授权的跨平台开发库, 在 2000 年奇趣科技公司为开源社区发布了遵循 GPL(GNU General Public License)许可证的开源版本。
在 2008 年,诺基亚公司收购了奇趣科技公司,并增加了 LGPL(GNU Lesser General Public License)的授权模式。诺基亚联合英特尔利用 Qt 开发了全新的智能手机系统 MeeGo,可惜遭遇了微软木马屠城,诺基亚被迫放弃了 MeeGo, 而 Qt 商业授权业务也于 2011 年 3 月出售给了芬兰 IT 服务公司 Digia。
当然好消息是 Digia 于 2014 年 9 月宣布成立 Qt Company 全资子公司,独立运营 Qt 商业授权业务。目前 Qt 公司大力推广移动平台开发和商业应用, 总的来说 Qt 历经曲折,现在算是步入正轨了。
经过 20 多年的发展,Qt 已经成为最优秀的跨平台开发框架之一,在各行各业的项目开发中得到广泛应用。许多大型软件都是用 Qt 开发的,如 Autodesk Maya、Google Earth、Skype、WPS Office等。
永远不要忽视微软帝国的威胁,作为软件业的一代霸主,任何人都不要天真地试图和它做朋友,因为霸主不可能有朋友。微软的木马屠城是所有诺基亚人和芬兰人的痛,希望读者们都记牢这条。
Qt 和 KDE
之前提到 Qt 原本是商业授权软件,是怎么开源的呢?这就涉及 Qt 和 KDE 的纠葛了。
KDE 是 Linux 操作系统的桌面环境,与 GNOME 桌面是类似的,作为开源桌面它们竞争的情况更为多见,有兴趣的读者请猛击《Linux桌面环境》了解更多。
KDE 是采用 GPL 许可证发布的开源软件,而最初 Qt 是商业授权的,存在商业侵权风险,GNOME 则是基于开源 GTK 库的,没有什么商业风险,这一度是 GNOME 优越于 KDE 的特性。
由于 Qt 的商业授权,KDE 社区一度混乱纠结,与此同时 GNOME 则如火如荼发展起来了。 KDE 毕竟算是亲儿子,被另一波人欺负,奇趣科技公司当然看不下去了,最后是奇趣科技公司为了赢得开发者的支持,为 Qt 增加了 GPL 的开源授权, 对于开源社区而言,遵循 GPL 使用 Qt 就不需要付费,这为 KDE 解决了燃眉之急。
之后 KDE 桌面和 GNOME 都发展壮大起来,都做得越来越好了。
GPL 和 LGPL
除了商业授权,目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权(诺基亚收购后新增)。
对这两种开源授权,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。
GPL 是什么都要开源,这对商业软件应用是不利的,所以诺基亚增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库,仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。
其实只要不是做商业,就不太需要关注用什么授权,以 GPL 授权发布程序代码就可以了。
二、Qt 5.5全新的开始
导语
时间转眼而逝,看一下上次发的教程,已经是一年前的事情了。这一年发生了很多事情,包括自己也包括Qt。当然,自己很忙或者说为了编写《Qt 5编程入门》这些理由,并不能为一年的搁置进行开脱,所以这里首先还是要向广大读者,跟随yafeilinux一起走来的朋友说声抱歉,让你们久等了。
我一直把写博文写教程当做是一种爱好,即便是技术类博文也是如此,想到哪里就写哪里,少了点技术类文章的严谨,多了点抒情类文章的随性。这也是我教程的一种风格,我坚信只有爱好的东西才能做到完美,做大极致,编程亦如此。一年没有更新博文,也是觉得有些时候,有点急功近利了,这不符合我写这个系列教程的初衷,所以即便很多朋友邀我尽快更新,我还是没有为了应付而进行大幅度更新。
其实这一年中我也一直在做一些和Qt有关的事情,比如说前面提到的《Qt 5编程入门》,这个是和豆子(devbean)一起写的,现在已经出版上市了。在写这本书的同时,想了很多,也有很多好的东西想和大家分享,但是还是因为精力有限......再比如说为《Qt Creator快速入门》编写了实验讲义和PPT课件,完成这个的时候,我对该书第三版已经有了大致的思路,也本想早早和大家探讨,但还是因为精力有限......再有就是和天嵌科技合作的嵌入式教程,这个也是和hzzhou合作的教程,年初的时候用三个月跟hzzhou合作开发了一个小项目,这次再次合作,将探索Linux嵌入式编程教程的编写。
好了,好像扯了很多废话,现在终于有时间让自己静下心来了,万事开头难,只要开始了就要坚持下去,以后的一段时间,将以更新教程为主要业余工作。这一篇之所以叫全新的开始,既是因为Qt开源(qt-project.org)和Qt商业(qt.digia.com)进行合并,成立了Qt全资子公司,而且发布了全新的qt.io网站,也是因为最新的Qt 5.5版本已经公布,还有就是,一年没有写网络教程了,风格和思路可能会与以前有所不同。 作为全新开始的第一篇,这里不涉及太多的技术问题,而是讲一些新接触Qt应该了解的内容。后面的章节我们会从Qt Quick编程讲起,如果要学习C++ Widget编程,可以参考前面的文章。
环境:Windows 7 + Qt 5.5.0+QtCreator 3.4.2
正文
一、下载Qt
这里先说一下,很多同学不知道Qt去哪里下载,尤其是老版本的Qt根本不知道哪里可以找到,其实现在可以到 http://download.qt.io 上下载所有Qt开源的内容,其目录如下图所示。
这里最主要的目录是official_releases
,其中提供了官方发布的正式版软件。就是说要使用正式发布的稳定版Qt、Qt Creator等,到这里下载;而在archive目录中是存档内容,这里是Qt和Qt Creator的仓库,里面包含了所有的版本,所以如果想找老版本的同学可以在这个目录中查找。其他几个目录提供了一些相关的软件或者工具,比如在snapshots目录中可以下载到最新版本的快照,不过可能只提供了源码还需要自己进行编译。
这里我们下载development_releases→qt→5.5→5.5.0
中的:
qt-opensource-windows-x86-android-5.5.0.exe
为了便于大家下载,在我们qter论坛的下载页面提供了便捷下载链接,如下图所示。
比如点击“Qt SDK下载”按钮进入页面,进入后会默认显示最新Qt版本的下载,如果要下载其他内容,可以点击Parent Directory跳转到上一层目录。
二、安装Qt 5.5
进行Qt 5.5的安装,与以前的版本稍微不同的地方是,一开始会提示让登陆或者注册Qt社区账户。如下图所示。
如果已经有了一个Qt账户,可以直接填写Login后面的账户邮箱和密码;如果没有注册过,可以在Sign-up后面填写要注册的邮箱、密码。如下图所示。
当然也可以点击Skip按钮直接跳过这一步。不过拥有一个Qt账户还是很有用的,比如可以到Qt论坛进行发帖等。所以我们这里选择注册一个新的Qt账户,这里要注意,输入的密码至少要7位,不能包含上面输入的邮箱地址,而且要包括小写字母、大写字母、数字和符号四种类型中的三类。如下图所示。
输入完密码后,勾选下面的同意服务条款选项,然后就可以点击Next按钮继续安装Qt了。如下图所示。
首先要设置安装路径,注意安装路径中不要有中文。这里我们选择默认的路径,如下图所示。
下一步是选择组件,默认的选项已经满足我们的开发要求了,如果有其他要求,比如需要源码组件或者Android armv5开发,可以进行相关选择。如下图所示。
再往下是勾选同意许可协议。如下图所示。
当安装完成后,默认Launch Qt Creator是勾选的,这样点击完成按钮就会自动启动Qt Creator,如下图所示。
三、激活Qt账户
QtCreator运行后如下图所示,还是我们熟悉的界面。在正式讲解前,我们再来说说Qt账户,点击欢迎界面的QtAccount链接,可以快捷登陆Qt账户。
这时会弹出浏览器窗口,显示Qt账户登陆界面。我们可以输入前面注册过的账户,然后点击Sign in按钮,如下图所示。
如果是第一次登陆,会提示让验证邮箱,点击如下图所示的链接。
这时会提示已经向注册的邮箱发送了验证链接,如下图所示。
现在我们登陆自己注册的邮箱,打开Qt发送来的邮件,然后将Verify now后面的链接复制粘贴到浏览器地址栏进行访问。如下图所示。
在弹出的页面填写一些个人信息后,点击Confirm按钮,如下图所示。
现在就完成了Qt账户的验证,登陆Qt账户以后,可以更好的使用Qt社区的一些内容,比如Documentation文档、Blog博客、WiKi百科、Forum论坛等。如下图所示。
四、学习Qt视频教程
在欢迎界面点击“教程”按钮,可以看到Qt提供的一些视频教程,如下图所示。
我们点击一个视频,发现它是放在YouTube上的,这样国内的同学也许无法直接访问,不过还是可以通过一些方式来登陆YouTube的,这个有兴趣的同学可以百度一下。
五、运行一个示例程序
下面点击“示例”按钮,我们来运行一个Qt自带的示例程序。比如这里选择第二个Planets Example示例,它是Qt 5.5中新增的canvas3d演示程序,如下图所示。
这时会自动弹出该示例的帮助文档,如下图所示。
如果想在Qt Creator的帮助模式里查看该文档,可以直接点击上面的“Go to HelpMode”,这样该文档就会在帮助模式中显示。如下图所示。
现在在左下角可以看到planets项目还未配置,可以在项目模式中进行配置,如下图所示。
点击项目模式,可以看到默认选择了Desktop Qt 5.5.0MinGw套件,这表明是基于Qt5.5.0使用MinGw编译的桌面程序,也就是说安装好Qt 5.5,就自动为我们配置好了开发环境,可以直接使用。我们单击下面的ConfigureProject按钮来配置该项目。如下图所示。
这时可以看到右下角读取项目的进度,如下图所示。
程序打开后,可以在左上角看到整个项目的源码列表。现在可以点击左下角的绿色三角运行按钮来编译运行该程序。如下图所示。
程序运行效果如下图所示。大家可以看到Qt 5程序的强大功能。
因为自带的示例程序是以后学习的参考,所以,如果想在程序上进行改动,最好在源码的备份上进行修改。要定位到该程序的源码,可以在列表文件上右击,然后点击“在Explorer中显示”,如下图所示。
现在看到程序的源码目录了,如下图所示,可以将其复制到其他位置,然后重新打开该项目,以后就可以按照自己的意愿修改该项目了,如果把项目修改的面目全非了,又想恢复到原始状态,只需要再次拷贝一下源码即可。
小结
从整体下载、安装并运行示例程序的过程看来,Qt 5.5版本与以前的版本变化并不大。在这一篇中我们下载并安装好了Qt SDK,然后通过一个示例程序测试了安装的Qt SDK可以使用,这样就完成了我们开发环境的搭建,从下一篇开始,我们将进入QtQuick的世界。