开源 · 共享 · 自由

Qt系列书籍

Qt

Qt Creator快速入门》、《QtQt Quick开发实战精解》、《Qt 5编程入门》

Qt入门系列书籍介绍专题

 

书籍说明:《Qt Creator快速入门》讲解C++ Widget编程,里面涉及了Qt的基本内容,是学习Qt的必备基础,即便要学习QML、QtQuick,也需要先有Qt基础。所以,要入门Qt,建议先学习《Qt Creator快速入门》,然后学习《Qt 5编程入门》中的Qt Quick编程,有了基础之后,再学习《Qt及Qt Quick开发实战精解》中的例子。

系列书籍之一:《Qt Creator快速入门》第3版 新上市

源码下载 购买链接:

当当
配套的PPT课件和实验讲义:下载 基于Windows 7 + Qt 5.6.1重新全书修订,详细更改请查看下面的介绍部分。网友学习总结:请看这里  

 

系列书籍之二:《Qt 5编程入门》(讲解QML、Qt Quick)

源码下载 有任何问题都可以到这里讨论! 购买链接:


系列书籍之三:《Qt及Qt Quick开发实战精解》(讲解C++和QML实例)

预计2017年5月左右第二版上市,尽请期待!


书友须知

如果大家希望获得更好的开源教程,请支持正版图书!

《Qt Creator快速入门》(售罄)        源码下载

《Qt及Qt Quick开发实战精解》(售罄) 源码下载

QQ书友群:190740635(仅限购买正版图书的书友申请,申请时请注明书友!)

套书(问题、建议、书中勘误)专题贴进入讨论区(对套书中的任何问题和建议,都可以到该贴中进行回复!)

Qt快速入门网络系列教程 现在已经更新!最新Qt 4.8版本安装:流程

书友注意:

  1. 因为书中版面限制,所以代码注释不是很多。不过源码中有详细的注释,请大家下载源码进行参考学习!
  2. 下载Qt Creator 2.5.0及以后版本的童鞋,需要手动下载MinGW,请点击这里(包含使用教程):下载
  3. 如果在代码中使用tr()函数设置界面上显示中文出现乱码,请在主函数中使用(2版已经更新):QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8″));

所有版本的Qt下载地址:ftp://ftp.qt-project.org/qt/source/ (已过时)

所有版本的Qt Creator下载地址:ftp://ftp.qt-project.org/qtcreator/ (已过时)

Qt 及 Qt Creator 最新下载地址:http://download.qt-project.org/
其中snapshots里面包含了最新测试版本;official releases里面包含了官方发布版,即最终发布版; archive里面是Qt4.7及以前版本,Qt Creator2.5及以前版本。

建议因为Qt 5已经推出了,所以初学者又开始出现了那个选择开发工具的困扰。

到底是使用Qt 4呢,还是Qt 5呢?毕竟Qt 5是新的,我又是刚开始学,还是学习最新的技术吧!

很多初学者都有这样的思想。其实,Qt 5是从Qt 4发展而来的,这就像学习C++ 到底是否需要学习C一样,虽然完全可以直接学习前者,不过那样基础毕竟不牢靠,别人说的很多东西你可能也不知道在什么地方出现的。而且Qt 5现在还没有很好的文章教程,网上全是Qt 4的内容,初学者想自学,那问题可以说是滔滔不绝啊!这里想告诉大家,如果是初学者,真没必要用Qt 5来学习Qt 4的内容,虽然官方一直说Qt 4程序可以很容易移植到Qt 5,但实际上会出现很多小问题。对于初学者而言,快速学习知识才是最重要的,而不是浪费时间来搞环境。因为大家对很多东西还不是很了解,Qt 4已经够庞杂了,如果再和Qt 5掺和一起,我想,大家又会迷茫了,不知Qt如何学起了。

很多公司现在还在用Qt 2,Qt 3呢,所以说不是最新的就是最好的。还是那句话,适合的东西才是最好的。这里不是说Qt 5不好,只是,毕竟它跟Qt 4的框架都不同了,如果我们用不到它的新功能,而只是为了学习Qt编程,那么现在没必要用它。等我们掌握好Qt 4以后,了解了它的框架,然后再去学习Qt 5,这样只需要花费很少的时间来查看两者的区别即可,大体程序还是一样的。

如果是学习《Qt Creator快速入门》,还是建议下载书中使用的Qt和Qt Creator版本来学习,这样可以很快完成学习任务,尽量避免出错。等自己已经有了一定的知识积累之后,并且是需要使用高级版本的Qt的功能的时候,再去使用新版本的Qt。

《Qt Creator快速入门》第3版简介

两年前,当本书编写第2版时,Qt 5已经上市,当时基于多方面考虑,没有更新到Qt 5版本。后来为了满足广大读者的需要,出版了《Qt 5编程入门》,但是与书名不符的是,里面主要包含了QML和Qt Quick的内容,因为从某方面而言,Qt 5最大的更新其实就是Qt Quick。而对于本书涉及的C++ Widgets编程,在网站上提供了相应的迁移教程,帮助大家将Qt 4程序迁移到Qt 5。

之所以迟迟没有将本书更新到Qt 5,是因为作者感觉还不是时候。直到今年3月Qt推出了5.6版本,并且是Qt 5以来第一个长期支持版本,提供3年的安全更新和漏洞修复,作者感觉是时候将本书进行全面更新,引领读者进入Qt 5时代了。

这次改版基于Qt 5.6.1对全书进行修订,修改工作细化到每一句讲解、每一行代码、每一张图片,确保所有内容都得到更新,整体工作量不亚于重写全书。其中较大的改动是重写了第12章3D绘图、第13~14章多媒体内容、第20章WebKit,因为Qt 4中相关模块被Qt 5中新的模块代替,具体更改可以参见相关章节。这次改版对Qt 5的更新以及将程序从Qt 4迁移到Qt 5做了全面介绍,但是为了不影响初学者的主线学习,将这些内容放到了附录中。

本系列丛书现在包括3本:《Qt Creator快速入门》、《Qt及Qt Quick开发实战精解》、《Qt 5编程入门》。由于历史原因,这3本书的书名可能无法代表其中的内容,这里做一下说明。

《Qt Creator快速入门》讲解了经典的C++ Widgets编程,是Qt最基础和最核心的内容,也是Qt入门学习必学的内容,现在最新版本为第3版,基于Qt 5.6.1和Qt Creator 4.0.1。

《Qt 5编程入门》讲解了QML语言、Qt Quick编程和移动开发相关内容,主要用于为移动设备开发动态触摸式界面,QML和Qt Quick虽然是全新的语言和内容,但是其包含在Qt框架之中,很多机制和理念都与经典的C++ Widgets编程一致,所以建议先学习《Qt Creator快速入门》,再来学习本书,现在最新版本是即将出版的第2版,将基于Qt 5.7。

《Qt及Qt Quick开发实战精解》以前包括了C++ Widgets综合实例程序和Qt Quick的基础内容,因为现在Qt Quick的基础内容已经编写到了《Qt 5编程入门》中,所以,今后该书的定位是C++ Widgets综合实例程序和Qt Quick综合实例程序,现在最新版本是即将出版的第2版,将基于Qt 5.7。

《Qt Creator快速入门(第3版)》出版后,《Qt 5编程入门(第2版)》和《Qt及Qt Quick开发实战精解(第2版)》也会很快出版,这样本系列丛书已经基本成型,将覆盖Qt几乎全部基础内容,并提供应用了所有知识点的综合实例程序,读者使用该系列丛书可以轻松入门Qt编程世界。

《Qt 5编程入门》简介

Qt

本书的原型是网络上的一系列博客教程,是系列教程衍生出的第三套书籍。作者于2012年出版的《Qt Creator快速入门》和《Qt及Qt Quick开发实战精解》至今已经有两年多的时间,在这期间Qt的命运发生了翻天覆地的变化。2012年8月,诺基亚将Qt出售给同在芬兰的Digia公司,后者致力于发展Qt的商业授权用户,同时提供了Qt社区的良好运行环境。伴随着Qt Project(qt-project.org)的成立,Qt本身的开发终于成为一个真正的开放源代码项目。之后的Qt 5发布,使得Qt已经开始支持包括Windows、Linux、Mac OS X、Android、iOS、BlackBerry、Sailfish等在内的十几个桌面和移动平台。我们看到Qt的身世一波三折,但是又有足够的理由相信Qt的未来会越来越好。

因为在博客中发表Qt教程,所以认识了很多Qt爱好者和普及者,其中包括本书的另外一名作者程梁(网名豆子、devbean)。豆子与我的经历类似:我从2009年开始在百度博客上编写Qt Creator系列教程,因为图文并茂,简单易懂,所以得到了众多网友的肯定;而豆子也从2009年开始,在51CTO博客中推出Qt学习之路系列教程,因为讲解细致,拥有自己的独到见解,所以受到了广大网友的热捧,后来被51CTO专题收录,现在总浏览量已有数百万。后来我从百度博客迁移到自己的yafeilinux.com个人博客;而豆子也从51CTO博客转移到自己的个人博客网站devbean.net。有着如此相似经历的两个人走到一起会发生什么呢?就是组建了更符合网友需求的Qter开源社区(qter.org)。这个社区一直在发展,我们的目标就是要为各位致力于学习Qt的朋友提供一个便捷之门。

随着Qt 5的发布,我们经常可以在论坛上看到需要Qt 5相关教程和书籍的朋友。Qt 5的全新框架、Qt Quick 2 技术、以及最新版本的 Qt 提供了对现在非常流行的Android和iOS等移动平台的支持,都使得现在想要学习Qt的读者数量剧增。现阶段国内外图书市场上极少有关于Qt 5的书籍,但是却拥有众多需要该类书籍的初学者和开发者。为了解决这个矛盾,我和豆子决定再做一次第一个吃螃蟹的人,从而有了本书。

Qt的历史

Qt是由奇趣科技公司(Trolltech)的两位创始人Haavard Nord和Eirik Chambe-Eng合作开发而成,首个版本完成于1991年,而第一个商业版本则是在1995年才正式推出。

Qt的名字来源于一个有趣的故事。当时这个工具之所以取名为Qt,是因为在Haavard的Emacs字体中,字母Q看起来非常漂亮;而字母t的灵感则来源于当时的另外一个工具Xt(X toolkit)的取名。

初版Qt只有两个版本:适用于类Unix平台的Qt/X11和适用于Windows平台的Qt/Windows。其中,Windows版本只有专利授权,这意味着如果需要将使用Qt/X11编写的开源应用移植到Windows平台,必须购买专利授权。

2001年底,奇趣科技发布Qt 3.0,从这个版本起,Qt增加了对Mac OS X平台的支持。不过,直到2003年6月之前,Mac OS X版本的Qt也只有专利授权。当Qt 3.2发布的时候,奇趣科技才增加了Mac OS X平台的GPL授权。

2005年6月28日,奇趣科技发布了Qt 4.0。这是一个全新的版本,与之前的3.x系列不仅二进制不兼容,甚至API也不兼容。这在一定程度上使人颇有微词。

2008年6月17日,诺基亚公司宣布以公开竞购的方式收购奇趣科技,连同奇趣科技旗下的Qt。同年,诺基亚将Qt的名字更改为Qt Software,然后又更改为Qt Development Framework。在诺基亚的领导下,Qt的工作重心由桌面系统转移至诺基亚旗下的手持设备。2009年5月11日,诺基亚宣布Qt源代码在著名的git托管平台Gitotious面向公众开放,标志着Qt正式成为面向社区的开源框架。不过,尽管诺基亚承诺Qt开放源代码,但事实上Qt的代码提交与维护仍然牢牢掌握在诺基亚手中。2009年12月1日,Qt 4.6发布,这是第一个移植到Symbian S60平台的版本。

2011年2月,诺基亚宣布放弃自己的Symbian平台,转而投向微软公司的Windows Phone平台。一个月之后,诺基亚宣布将Qt的商业授权和专业服务出售给Digia公司。后者启动了Qt Project,同时宣布将努力促使Qt支持Android、iOS和Windows Phone三大平台,并且继续关注于桌面和嵌入式平台的开发。这意味着Qt正在努力成为一个全平台的开发框架。现在看来,在一定程度上,Digia的确做到了这一点。

Qt 4之后的下一个大的版本Qt 5原计划于2012年6月发布,但是由于诺基亚的政策调整和出售Qt的缘故,直到2012年12月19日,Qt 5.0才正式发布。这是继Qt 4之后的另一个大的升级。表面看来,Qt 4到Qt 5的改动并不比Qt 3到Qt 4来的激进,但是Qt 5引入了全新的硬件加速图形处理,并且将QML与JavaScript提升到同C++相等的地位。传统的基于C++的Qt Widgets仍将继续支持,但是全新的架构所带来的性能提升则更多作用于QML和JavaScript。

值得一提的是,Qt 5的开发真正由Qt Project社区驱动,现在Qt已经允许诺基亚和Digia之外的开发人员提交并审核代码。

Digia接管Qt业务以后,Qt的开发速度有了明显提升。2013年7月3日,Qt 5.1发布。Qt 5.1除了修改5.0版本的bug之外,更带来了Android和iOS平台的实验性支持。2013年12月12日发布的Qt 5.2版本,则正式引入对Android和iOS平台的支持;同时,Qt 5.2引入了一个新的场景图像渲染器,针对OpenGL后端提升了矢量绘制的性能,将GPU的占用降至最低。2014年5月20日,Qt 5.3发布。Qt 5.3改进了对iOS平台的支持,并且开始支持WinRT平台。这为Qt成为全平台的开发工具更进一步。

Qt授权

Qt的授权一直比较复杂,既包括商业授权,又包括开源授权,并且不同版本之间的授权并不一致。下面我们来详细介绍下有关授权的问题。

首先需要说明的是,Qt自发明以来一直都有一个商业授权。这个商业授权允许开发者开发专有程序。同时,Qt商业授权除了包含Qt开源版的一切功能外,还包括一些企业应用的组件,比如Qt Charts、Qt Data Visualization等;还有Digia公司支持的Qt培训等内容。

真正复杂的是Qt开源授权。Qt 1.45之前,Qt的源代码一直遵循FreeQt协议。该协议既不符合Open Source Initiative定义的开放源代码原则,也不符合Free Software Foundation定义的自由软件。在此协议下,Qt的源代码虽然可用,但是并不允许重新发布修改过的版本。

1998年,基于Qt的KDE成为Linux最流行的桌面环境之一。不过,因为Qt协议的问题,很多人担心这将给KDE桌面环境的发展带来影响。这也正是日后Qt协议问题的根源之一。

Qt 2.0的开源授权由FreeQt更改为Q Public License(QPL)。这是一个自由软件协议,但是与GPL不兼容,而后者才是Linux遵循的协议。作为妥协,KDE团队与当时的奇趣科技达成协议,即使奇趣科技濒临破产,也不能使Qt的协议比QPL更加专有。直到2000年,Qt/X11 2.2正式以GPLv2协议发布,才终结了这一授权的法律问题。

2002年,KDE on Cygwin项目开始将GPL授权的Qt/X11移植到Windows平台。此时,Windows平台还没有一个开源版本的Qt。不过,该项目并没有取得成功,但却直接导致奇趣科技在2005年6月将Qt/Windows 4以GPL授权的形式发布。至此,Qt 4在全部主流桌面平台都有了基于GPL协议的开源版本。随着GPLv3发布,Qt又增加了具有额外条款的GPLv3协议。这个“额外条款”允许将Qt编写的最终应用程序以不兼容GPL的自由软件/开源协议发布。

虽然此时的Qt已经有了自己的开源版本,但是作为一个类库,使用GPL协议开源具有一定的危险性。由于GPL的传染性,GPL不允许发布闭源程序。这种协议将极大地限制Qt在商业软件领域的应用。所以在2009年1月14日,Qt 4.5终于众望所归地增加了LGPL协议,允许使用Qt开发闭源程序。

尽管历史很复杂,但是我们的结论很简单:最新的Qt 5.3版本使用两种协议发布——商业协议和LGPL 2.1。

本书特色

         本书是经典的Qt应用编程系列丛书继《Qt Creator快速入门》和《Qt及Qt Quick开发实战精解》之后的又一力作,是市面上为数不多的全面介绍Qt 5、QML和Qt Quick的入门书籍。与其它相关书籍最大的不同之处还包括,本书是基于网络教程的。综合来说,本书主要具有以下特色:

  •  最新。本书基于最新的Qt 5.3.0和Qt Creator 3.1.1版本进行编写,Qt 5.3.0是Qt 5的最新的稳定版本。
  • 基于社区。本书以Qter开源社区为依托,由社区站长合作完成。读者可以通过论坛、邮件、QQ群等方式和作者零距离交流。
  • 无限更新。本书对应的网络教程是无限更新的,本书已经是该网络教程衍生的第三套书籍了。
  • 全新风格。本书力求以全新的视角,引领开发者进行程序代码的编写和升级,同时以初学者的角度进行叙述,每个小知识点都以一个完整的程序来讲解。尽量避免晦涩难懂的术语,使用初学者易于理解的平白的语言编写,目标是让初学者在快乐中掌握知识。
  •  授之以渔。在整书的编写过程中,都是在向读者传授一种学习方法,告诉读者怎样发现问题、解决问题,怎样获取知识,而不是向读者灌输知识。本书的编写基于Qt参考文档,所讲解的知识点多数是Qt参考文档中的部分内容,大家在学习时一定要多参考Qt帮助文档。在本套书籍讲解的所有的知识点和示例程序中,都很明显的标出了其在Qt帮助中对应的关键字,这样可以让读者对书中的内容有迹可循。

 

本书结构

本书着重讲解Qt 5中QML和Qt Quick的编程知识,首先对Qt 5进行了整体介绍以及Qt 4项目移植到Qt 5的介绍,然后讲解了QML语法和Qt Quick的基础内容,后面的几章讲解了Qt Quick在图像特效、绘画、多媒体、数据显示和处理等方面的高级应用。全书的目录结构如下表所示。

目录

介绍

第1章 Qt 5简介 Qt 5整体介绍,从Qt 4过渡到Qt 5需要了解的内容。
第2章 将Qt 4代码迁移到Qt 5
第3章 Qt Quick的世界 QML和Qt Quick基础内容,编写QML应用程序必备的基础知识。
第4章 QML语法
第5章 Qt Quick基础
第6章 Qt Quick控件和对话框
第7章 图形动画基础
第8章 图形效果 Qt Quick高级应用,要设计功能强大、界面绚丽的Quick应用必备的专业知识。
第9章 粒子系统
第10章 Canvas基础
第11章 模型和视图
第12章 多媒体应用
第13章 QML与C++的集成
第14章 使用Qt Quick设计器

另外需要说明,使用Qt进行Android和iOS等移动平台的开发部分(包括环境设置、传感器应用、蓝牙通信、摄像头控制、多点触控等相关内容),鉴于相关内容还不是非常成熟,而且依赖于特定设备,所以该部分的内容没有直接编写到书中,而是放到了网络教程中。这样可以更及时地进行更新,并且对设备等相关的问题与读者进行直接探讨。

使用本书

本书的主要内容是讲解Qt 5中的QML和Qt Quick开发,另外还包含了对Qt 5框架和移植的介绍等内容。对于QML初学者,建议先学习QML和Qt Quick的基础知识,等有了一定的基础后再来学习后面的内容。

本书假设读者已经具有一定的Qt编程基础,因而不会对Qt的基础面面俱到。如果大家希望系统地学习Qt编程,最好先自行学习基于C++的Qt Widgets编程方面的内容。可以参考Qt 应用编程系列丛书中的《Qt Creator快速入门(第2版)》一书。《Qt Creator快速入门(第2版)》的写作风格与本书一致。

对于学习过《Qt 及Qt Quick开发实战精解》(以下简称《精解》)一书的读者,这里做一个解释:虽然《精解》一书中也包含了Qt Quick的内容,但那是Qt 4.7时代的Qt Quick,因为是新引进的技术,所以非常不成熟。本书中的QML和Qt Quick的内容是基于最新的Qt 5。新版本的Qt Quick已经进行了巨大的更新。另外,在以后《精解》一书再版时,其中的Qt Quick内容会被删除。

在学习过程中,建议读者多动手,尽量自己按照步骤编写代码。只有在遇到自己无法解决的问题时,再去参考本套书籍提供的源代码。每当学习一个知识点时,书中都会给出Qt帮助中的关键字,建议大家详细阅读Qt帮助文档,看下英文原文是如何描述的。不要害怕阅读英文文档,因为很难在网上找到所有文档的中文翻译,并且即使翻译,也有可能偏离原意,所以最终还是要自己去读原始文档。学会看参考文档是入门Qt编程的重要一步。不要说自己英文不好,只要坚持,掌握了一些英文术语和关键词以后,阅读英文文档是不成问题的。

书中使用的Qt版本的说明

本书基于Windows平台Qt 5.3.0和Qt Creator 3.1.1版本。它们是本书完稿时的最新版本。为了避免读者使用不同的操作系统而产生不必要的问题,本书采用了常用的Windows 7操作系统。这里要向对Qt版本不是很了解的读者说明一下,对于Qt程序开发,无论是在Windows系统下进行开发,还是在Linux系统下进行开发;无论是进行桌面程序开发,还是进行移动平台或者嵌入式平台的开发,只需要编写一次代码,然后分别进行编译就可以了,这就是Qt最大的特点,即所谓的“一次编写,随处编译”。也就是说,读者需要学好本书中Qt的基本内容,然后编写代码,使用Qt不同的版本进行移植、编译即可。

在学习本书时,推荐大家使用指定的Qt和Qt Creator版本,因为对于初学者来说,任何微小的差异都可能导致错误的理解。当然,大家也可以使用其他版本,Qt的下载地址为:http://download.qt.io/official_releases/qt/。

致谢

首先还是要感谢北京航空航天大学出版社的编辑,是他们的鼓励和支持,才让我们更有信心继续前行,使得Qt应用编程系列丛书更加丰富。

感谢那些关注和支持Qter开源社区的朋友们,是他们的支持和肯定,才让我们有了无穷的动力。本书由我和豆子完成了一审和二审,由Qter社区的另外两位站长周慧宗(hzzhou)和刘柏燊(紫侠)完成了三审和终审。本书的Android开发部分得到了Qter社区Joey_Chan站长的大力支持。是Qter社区全体站长的齐心协作,才使本书可以在最短的时间内以较高的质量呈现给广大爱好者,这里一并对他们表示感谢。

由于作者技术水平有限,Qt 5中又是全新的技术和概念,并且没有统一的中文术语参考,所以书中难免有各种理解不当和代码设计问题,恳请读者批评指正。读者可以到Qter开源社区(qter.org)下载本书的源码,查看与本书对应的不断更新的系列教程,也可以与作者进行在线交流和沟通,我们在Qter开源社区期待大家。

套书简介

在2009年,当作者开始使用推出不久的Qt开发环境Qt Creator时,由于该软件还不成熟,所以经常出现一些问题,但是在网络上却几乎找不到任何的相关内容可以参考。于是作者便将自己的学习经验和心得进行整理,以yafeilinux为网名在博客中推出了一系列Qt和Qt Creator相关教程。这些教程浅显易懂,使用的描述语言很自然,而且图文并茂,每一个知识点都有一个可以运行的示例程序。由于这些特点都很符合读者的需求,所以这个系列教程得到了众多网友的肯定和称赞,这也给了作者很大的信心继续写下去。到2010年,作者接到北航出版社董立娟编辑的邀请,希望可以将系列教程整理成书,所以才有了今天的这一套书籍。

 

本套书籍一共分为两本:《Qt Creator快速入门》和《Qt及Qt Quick开发实战精解》。在《Qt Creator快速入门》中主要进行知识点的详细讲解,根据应用的不同分为了五个篇章:基本应用、图形动画、影音媒体、数据处理和网络通信;在《Qt及Qt Quick开发实战精解 》中主要讲解了五个综合实例以及Qt Quick的内容,其中的五个实例程序分别对应了《Qt Creator快速入门》的五个篇章,也就是说每一个应用实例都是对应篇章的知识点的综合应用。本套书籍的结构如下图所示:

Qt

本套书籍作为全面介绍Qt、Qt Creator和Qt Quick的入门级教材,也是市面上第一套详细介绍Qt Creator和Qt Quick的教材。与其他相关书籍最大的不同之处还在于,本套书籍是基于网络博客教程的。综合来说,本套书籍主要具有以下特色:

  • 最新。基于最新的Qt 4.7.2和Qt Creator 2.1.0版本进行编写,在该版本中首次正式集成了Qt Quick。

 

  • 最全。书中的内容包含了Qt基础、图形动画、多媒体、数据库、网络通信、WebKit以及Qt Quick等所有基本的应用内容。

 

  • 无限更新。本套书籍对应的网络教程是无限更新的,而且读者可以通过邮件、QQ群或者论坛和作者零距离接触。

 

  • 按应用分类。本套书籍中将同一应用的相关章节放在了一起作为一个篇章,例如图形动画篇中就是讲解了所有与绘图和动画相关的知识。这样组织更有利于读者在程序开发时进行选择性参考学习。

 

  • 知识点讲解与大型实例设计分离。本套书籍将知识的讲解和综合实例的设计分为了两部分。这样读者便不会因为要在很长的代码中学习某个知识点而一头雾水,但每一个知识点都设计了一个很简单的示例程序,让读者可以实际的看到该知识点的应用效果;而设计大型实例时,将主要的精力放在程序框架和功能实现上,不再细讲其中的知识点,这样更有利于读者学习设计综合性程序。

 

  • 程序设计分步实现。本套书籍中不是像其他书籍那样将一个完整示例程序的所有代码全部列出并进行讲解,而是分步来设计该程序,从创建项目开始,一个功能模块一个功能模块的分步添加,这样可以让读者更好的了解程序的设计过程。

 

  • 关键字提示。本套书籍的编写主要基于Qt参考文档,而且所讲解的知识点也只是Qt参考文档中的部分内容,大家在学习时一定要多参考Qt帮助文档。在本套书籍讲解的所有的知识点和示例程序中,都很明显的标出了其在Qt帮助中对应的关键字,这样可以让读者对书中的内容有迹可循。

《Qt Creator快速入门》第2版简介

《Qt Creator快速入门》出版至今已经有一年多的时间,在这期间Qt的命运发生了翻天覆地的变化。2012年8月,诺基亚将Qt出售给同在芬兰的Digia公司,该公司致力于发展Qt的商业授权用户,同时提供Qt社区的良好运行环境。伴随着Qt Project(qt-project.org)的成立,Qt本身的开发终于成为一个真正的开放源码项目。之后的Qt 5发布,使得Qt已经开始支持包括Android、iOS、BlackBerry、Sailfish等在内的十几个平台。我们有足够的理由相信Qt的未来会越来越好。

 

在这一年多的时间里,Qt和Qt Creator发布了多个版本,一些流程和细节做了很多改动。为了让初学者不至于因为开发环境的细微而改变产生不必要的问题,浪费宝贵的学习时间,在这次重印时,作者将本书按照最新的Qt 4版本进行了修订。之所以没有选择升级到Qt 5,是因为现在大多数应用还停留在Qt 4,Qt 5的前面几个版本还不是十分完善;并且Qt 5在Qt 4的基础上发展而来,本书中几乎所有源代码都可以直接使用Qt 5编译运行;还有一点,Qt 5新增的Qt Quick部分的内容,本书并没有涉及。基于以上原因,作者认为,只要大家先学习本书中介绍的知识,而后再了解下Qt 4和Qt 5的一些改动细节,就可以轻松过渡到Qt 5了。

 

这次改版,作者将书中所有示例代码均进行了重构,更换了几乎所有图片,做了上百项细节修改,使用Windows 7系统,基于目前最新的Qt 4.8.5和Qt Creator 2.8.0进行编译测试通过。通过这些修改,作者力求让读者依靠本书中内容即可完成所有例程,掌握各个知识点,从而达到自学Qt的目的。

 

这次改版还更新了Qt Creator环境的详细介绍、在Qt Creator中使用版本控制系统、MySQL数据库驱动的编译、在Linux系统上搭建Qt开发环境等内容。由于这部分内容多属于流程性内容,为了不增加本书的厚度和成本,作者选择将它们放到本书所依靠的Qter开源社区(www.qter.org),作为本书的网络资源进行更新,使所有感兴趣的读者均可自由查看学习。

 

再次强调,本书适用于Qt基础知识的学习,并没有涉及综合实例。如果希望学习知识点的综合应用以及Qt Quick的基础知识,建议读者配合《Qt及Qt Quick开发实战精解》一书,其中的几个实例都应用了本书讲到的众多知识点,可以帮助大家加强对Qt整体框架和一些具体知识点的理解。

 

本书内容源于网络博客,作者会在网上及时解答读者疑问、更新修改内容、发布相关教程,敬请读者关注作者个人网站(www.yafeilinux.com)和Qter开源社区(www.qter.org)的相关内容。

 

最后祝每一位Qter都可以享受到Qt编程的乐趣!

 

《Qt Creator快速入门》简介

Qt

《Qt Creator快速入门》一书源自网络博客中的“Qt Creator系列教程”。在书中对教程里的内容进行了修正和扩充,并且根据读者实际的学习应用情况,将所有内容按领域分为了几个部分。系列教程最大的特点就是详尽易懂,在编写本书时也保持了这种风格,对每一个不易明白的知识点都进行了详细讲解,对每一个示例程序都保留了完整的创建过程。为了向读者授之以渔,每一章节的内容都注明了Qt参考文档中对应的关键字,读者只需要在Qt参考文档中以该关键字进行索引,就可以找到该章节内容的英文文档。

与本书配套的还有一本《Qt及Qt Quick开发实战精解》,里面主要是几个综合性的实例程序和Qt Quick的内容。在这套书籍里将知识点的讲解和综合实例进行了分离,这样就避免了在大型实例中学习知识点所造成的困扰。因为在很多书籍里都是上来就列出一个很大的程序,然后在讲解这个程序的同时介绍里面使用到的知识点,将知识点放到实际应用中进行讲解是一个不错的方式,但是,往往初学者无法按照书中给出的流程顺利编写编译并运行这个程序,在整个过程中会出现很多这样或那样的问题。对于初学者而言,无法运行程序就无法看到实际结果,既然看不到实际的结果,那对知识点的学习和掌握程度就会大打折扣。为了避免这样的情况,在《Qt Creator快速入门》中只是讲解知识点,每个知识点都设计了一个很小的示例程序,并且给出了完整的创建项目的流程,这样可以确保读者花费很少时间就可以看到一个知识点的实际应用效果。当读者掌握了大量知识点而且熟悉了创建项目流程后,就可以在《Qt及Qt Quick开发实战精解》中尝试学习综合性的程序。而在讲解综合程序时,也不是上来就将完整程序的所有代码全部列出再进行讲解,而是分步骤分模块的进行功能扩展,让读者看到大型程序的实际设计过程。

目录

基本应用篇

第1章 Qt Creator简介

1.1 Qt Creator的下载与安装

1.1.1 下载软件

1.1.2 安装软件

1.2 Qt Creator环境介绍

1.2.1运行一个示例程序

1.2.2帮助模式

1.3 Qt工具简介

1.3.1 Qt Assistant(Qt助手)

1.3.2 Qt Designer(Qt设计器)

1.3.3 Qt Examples and Demos(Qt演示程序与示例)

1.3.4 Qt Linguist(Qt语言家)

1.4 小结

 

第2章Hello World

2.1编写Hello World程序

2.1.1新建Qt Gui应用

2.1.2文件说明与界面设计

2.2程序的运行与发布

2.2.1程序的运行

2.2.2程序的发布

2.2.3设置应用程序图标

2.3 helloworld程序源码与编译过程详解

2.3.1纯代码编写程序与命令行编译

2.3.2使用ui界面文件

2.3.3自定义C++类

2.3.4 使用Qt设计师界面类

2.4 项目模式和项目文件介绍

2.4.1项目模式

2.4.2项目文件

2.4.3 关于本书源码的使用

2.5小结

 

第3窗口部件

3.1基础窗口部件QWidget

3.1.1窗口、子部件以及窗口类型

3.1.2窗口几何布局

3.1.3程序调试

3.2对话框QDialog

3.2.1模态和非模态对话框

3.2.2多窗口切换

3.2.3标准对话框

3.3其他窗口部件

3.3.1QFrame类族

3.3.2按钮部件

3.3.3行编辑器

3.3.4数值设定框

3.3.5滑块部件

3.4小结

 

第4布局管理

4.1布局管理系统

4.1.1布局管理器

4.1.2设置部件大小

4.1.3可扩展窗口

4.1.4分裂器

4.2设置伙伴

4.3设置Tab键顺序

4.4小结

 

第5应用程序主窗口

5.1主窗口框架

5.1.1 菜单栏和工具栏

5.1.2 中心部件

5.1.3 Dock部件

5.1.4状态栏

5.1.5 自定义菜单

5.2富文本处理

5.2.1富文本文档结构

5.2.2 文本块

5.2.3表格、列表与图片

5.2.4查找功能

5.2.5语法高亮与HTML

5.3拖放操作

5.3.1使用拖放打开文件

5.3.2 自定义拖放操作

5.4打印文档

5.5小结

 

第6事件系统

6.1 Qt中的事件

6.1.1 事件的处理

6.1.2 事件的传递

6.2鼠标事件和滚轮事件

6.3键盘事件

6.4定时器事件与随机数

6.5事件过滤器与事件的发送

6.6小结

 

第7章 Qt对象模型和容器类

7.1对象模型

7.1.1信号和槽

7.1.2属性系统

7.1.3 对象树与拥有权

7.1.4 元对象系统

7.2容器类

7.2.1 Qt的容器类介绍

7.2.2 遍历容器

7.2.3 通用算法

7.2.4 QString

7.2.5 QByteArray和QVariant

7.3正则表达式

7.3.1 正则表达式介绍

7.3.2 正则表达式组成元素

7.3.3 文本捕获

7.4小结

 

第8界面外观

8.1 Qt风格

8.1.1使用不同风格预览程序

8.1.2使用不同风格运行程序

8.1.3调色板

8.2 Qt样式表

8.2.1 Qt样式表介绍

8.2.2 Qt样式表语法

8.2.3自定义部件外观与换肤

8.3特殊效果窗体

8.3.1不规则窗体

8.3.2 透明窗体

8.4小结

 

第9章 国际化、帮助系统和Qt插件

9.1国际化

9.1.1使用Qt Linguist翻译应用程序

9.1.2程序翻译中的相关问题

9.2帮助系统

9.2.1简单的帮助提示

9.2.2定制Qt Assistant

9.3创建Qt插件

9.3.1在设计模式提升窗口部件

9.3.2创建应用程序插件

9.3.3创建Qt Designer自定义部件

9.4小结

 

图形动画篇

 

第10章 2D绘图

10.1 基本绘制和填充

10.1.1 基本图形的绘制和填充

10.1.2渐变填充

10.2坐标系统

10.2.1抗锯齿渲染

10.2.2坐标变换

10.3其他绘制

10.3.1绘制文字

10.3.2绘制路径

10.3.3绘制图像

10.3.4复合模式

10.4双缓冲绘图

10.5绘图中的其他问题

10.5.1重绘事件

10.5.2剪切

10.5.3读取和写入图像

10.5.4播放gif动画

10.5.5渲染SVG文件

10.6小结

 

第11图形视图、动画和状态机框架

11.1图形视图框架的架构

11.1.1场景

11.1.2视图

11.1.3图形项

11.2图形视图框架的坐标系统和事件处理

11.2.1坐标系统

11.2.2事件处理与传播

11.3图形视图框架的其他特性

11.3.1图形效果

11.3.2动画、碰撞检测和图形项组

11.3.3打印和使用OpenGL进行渲染

11.3.4窗口部件、布局和内嵌部件

11.4动画框架

11.4.1实现属性动画

11.4.2使用缓和曲线

11.4.3动画组

11.4.4在图形视图框架中使用动画

11.5状态机框架

11.5.1创建状态机

11.5.2在状态机中使用动画

11.5.3状态机框架的其他特性

11.6小结

 

第12章 3D绘图简介

12.1使用OpenGL绘制图形

12.2设置颜色

12.3实现3D图形

12.4使用纹理贴图

12.5 在3D场景中绘制2D图形

12.6 小结

 

影音媒体篇

 

13 Qt多媒体应用介绍

13.1 使用QSound播放声音

13.2使用QMovie播放动画

13.3多媒体的底层控制

13.4 小结

 

14Phonon多媒体框架

14.1 Phonon多媒体框架的架构

14.1.1 Phonon媒体图中的节点

14.1.2播放后端(Backends)

14.2播放音频

14.2.1实现简单的音频播放

14.2.2创建音频流媒体图

14.2.3使用音频效果

14.3播放视频

14.3.1实现简单的视频播放

14.3.2创建播放视频的媒体图

14.3.3控制视频播放

14.4小结

 

数据处理篇

 

第15文件、目录和输入/输出

15.1文件和目录

15.1.1输入/输出设备

15.1.2文件操作

15.1.3目录操作

15.2文本流和数据流

15.2.1使用文本流读写文本文件

15.2.2使用数据流读写二进制数据

15.3其他相关类

15.3.1 应用程序设置

15.3.2统一资源定位符

15.3.3 Qt资源

15.3.4缓冲区

15.4小结

 

16 模型/视图编程

16.1模型/视图架构

16.1.1组成部分

16.1.2 简单的例子

16.2 模型类

16.2.1基本概念

16.2.2创建新的模型

16.3视图类

16.3.1基本概念

16.3.2 处理项目选择

16.4委托类

16.4.1基本概念

16.4.2自定义委托

16.5项目视图的便捷类

16.5.1 QListWidget

16.5.2 QTreeWidget

16.5.3 QTableWidget

16.5.4共同特性

16.6 在项目视图中启用拖放

16.6.1在便捷类中启用拖放

16.6.2在模型/视图类中启用拖放

16.7 其他内容

16.7.1代理模型

16.7.2 数据-窗口映射器

16.8小结

 

第17数据库和XML

17.1数据库

17.1.1连接到数据库

17.1.2执行SQL语句

17.1.3使用SQL模型类

17.2 XML

17.2.1 DOM

17.2.2 SAX

17.2.3 XML流

17.3小结

 

网络通信篇

 

第18网络编程

18.1 HTTP

18.2 FTP

18.3获取网络接口信息

18.4 UDP

18.5 TCP

18.6小结

 

第19进程和线程

19.1进程

19.1.1运行一个进程

19.1.2进程间通信

19.2 线程

19.2.1使用QThread启动线程

19.2.2同步线程

19.2.3可重入与线程安全

19.2.4线程和QObjects

19.3小结

 

第20章 WebKit

20.1 QtWebKit模块简介

20.2基于QtWebKit的网页浏览器

20.2.1显示一个网页

20.2.2显示网站图标

20.2.3显示历史记录

20.2.4 链接跳转和查找功能

20.3小结

 

参考文献

《Qt及Qt Quick开发实战精解》简介

Qt

《Qt及Qt Quick开发实战精解》源自yafeilinux网站上的“Qt开源系列软件”和“Qt Quick系列教程”的部分内容。书中主要包含了多文档编辑器、方块游戏、音乐播放器、数据管理系统、局域网聊天工具等5个综合性实例和Qt Quick的内容。Qt开源系列软件已经经过多次的改进,而在编写本书时,再次对这几个程序进行升级优化。在对程序进行讲解时,采用了分步骤、分模块进行程序设计并讲解的方式,这样可以让读者一步步设计自己的程序,学习综合程序的设计流程,并且可以减少可能出现的问题。在Qt Quick部分,对QML语言的语法和各种模块进行了详细讲解,本书也是市面上第一本详细讲解Qt Quick的书籍。

与本书配套的还有一本《Qt Creator快速入门》,在该书中主要讲解了Qt各个领域的基础知识,《Qt及Qt Quick开发实战精解》中的五个实例就是对该书中知识点的综合应用。

 

实例介绍:
Qt

多文档编辑器:实例中实现了最常用的多文档编辑功能,对其中的菜单设计、图标状态、功能依赖、右键菜单、状态栏、保存窗口设置等都进行了详细讲解。该实例是对《Qt Creator快速入门》第一篇知识点的综合应用,是初学者的第一个作为入门的经典实例。

Qt

方块游戏:该实例是对yafeilinux网站中方块游戏开源软件的再次升级,如果大家以前设计过方块游戏,是不是对里面复杂的算法和游戏逻辑所困扰?在这里使用了全新的图形视图框架来进行设计,得益于该框架的优越性,设计这样的游戏时不再需要考虑复杂的算法,而只需要考虑游戏布局和界面效果。该游戏实现了多彩方块、背景音乐和音效等功能,是对《Qt Creator快速入门》多个篇章众多知识点的应用。

Qt

音乐播放器:在yafeilinux网上第一次发布音乐播放器开源软件时,不到一个月就有了上万的下载量,可见大家对类似软件的需求程度。这次对该软件重新进行设计,对歌词定位、桌面歌词效果等采用了全新的方法进行实现。很多读者都很想找一个应用了容器类、正则表达式等知识点的实例程序,现在可以参考一下该程序了。该播放器是对《Qt Creator快速入门》一书中众多内容的综合应用。

Qt

数据管理系统:该实例中主要应用了数据库和XML的知识,也涉及到了Qt中模型/视图的应用。其中包含了密码登录界面、生成清单、数据统计等内容。程序中对数据库和XML进行了综合使用,是对《Qt Creator快速入门》中第4篇相关章节知识点的应用。

Qt

局域网聊天工具:该实例实现了局域网聊天室的功能,其中还可以进行大型文件的传输。实例中主要应用了Qt网络编程中TCP和UDP的知识,是对《Qt Creator快速入门》中第五篇相关知识点的综合应用,想学习该部分知识的读者可以参考一下该程序。

 

目录

第一部分 综合实例

 

第1多文档编辑器

1.1界面设计

1.2创建子窗口类

1.3实现菜单的功能

1.3.1更新菜单状态与新建文件操作

1.3.2实现打开文件操作

1.3.3添加子窗口列表

1.3.4实现其他菜单功能

1.4完善程序功能

1.4.1保存窗口设置

1.4.2自定义右键菜单

1.4.3其他功能

1.5小结

 

第2方块游戏

2.1方块游戏架构

2.2实现游戏逻辑

2.2.1游戏流程

2.2.2实现基本游戏功能

2.3游戏优化

2.3.1添加满行销毁动画

2.3.2添加游戏级别设置

2.3.3添加游戏控制按钮和面板

2.3.4添加背景音乐和音效

2.3.5添加程序启动画面

2.4小结

 

3 音乐播放器

3.1播放器整体架构

3.2实现音乐播放

3.2.1创建播放器主界面

3.2.2媒体对象状态

3.3实现播放列表

3.3.1设计播放列表

3.3.2创建播放列表

3.4实现桌面歌词

3.4.1设计桌面歌词部件

3.4.2解析歌词文件

3.5 添加系统托盘图标

3.6小结

 

第4数据管理系统

4.1功能介绍与界面设计

4.1.1功能介绍

4.1.2界面设计

4.2实现商品管理功能

4.2.1实现出售商品功能

4.2.2显示日销售清单

4.3显示销售统计图表

4.4添加登录界面

4.5小结

 

第5局域网聊天工具

5.1界面设计

5.2实现聊天功能

5.3实现文件传输功能

5.3.1创建TCP服务器类

5.3.2创建TCP客户端类

5.3.3 在主界面中进行文件的发送和接收

5.4完善程序功能

5.4.1更改字体

5.4.2保存聊天记录及其他功能

5.5小结

 

第二部分 Qt Quick

 

第6章 Qt Quick

6.1 初识QML

6.1.1 QML基本语法

6.1.2 编写QML的Hello World程序

6.2 QML概念及框架

6.2.1 QML属性

6.2.2属性绑定

6.2.3 QML文件和QML组件

6.2.4在组件中添加属性

6.2.5在组件中添加函数和信号

6.2.6 集成JavaScript

6.2.7 QML动态对象管理

6.2.8 QML的作用域

6.2.9 QML的国际化

6.2.10 QML的编码约定

6.3 QML中的布局管理

6.3.1使用QML定位器和重复器

6.3.2 QML中基于锚(anchor)的布局

6.4基本可视元素

6.4.1 Item

6.4.2 Rectangle

6.4.3 Text

6.4.4 TextEdit

6.4.5 TextInput

6.5 事件处理

6.5.1 MouseArea

6.5.2按键处理

6.5.3定时器

6.5.4使用Loader动态加载组件

6.6图像、状态和动画

6.6.1渐变

6.6.2图片、边界图片和动态图片

6.6.3缩放、旋转和平移

6.6.4 QML状态

6.6.5 QML动画

6.6.6 Flickable和Flipable

6.7 QML中的模型/视图

6.7.1 QML数据模型

6.7.2在QML中呈现数据

6.8 QML和C++混合编程

6.8.1 Qt声明式用户界面运行环境

6.8.2创建Qt Quick应用程序

6.8.3在C++应用程序中使用QML

6.8.4 QML中的全局对象

6.9使用Qt Quick设计器

6.10小结

 

参考文献

Linux环境配置与中文乱码问题

书中默认的开发环境是:Windows XP + Qt Creator 2.1.0 + Qt 4.7.2

如果读者需要在Linux下进行开发,可以使用下面简单的步骤来搭建环境:

(下面以Ubuntu 12.04 为例进行说明)

 

1. 下载软件

ftp://ftp.qt-project.org/qt/source/ 下载Linux版本的Qt库 qt-everywhere-opensource-src-4.7.2.tar.gz

ftp://ftp.qt-project.org/qtcreator/ 下载Linux版本的qt-creator-linux-x86-opensource-2.1.0.bin

 

2.安装Qt Creator

在终端里为qt-creator-linux-x86-opensource-2.1.0.bin添加可执行权限:

chmod 777 qt-creator-linux-x86-opensource-2.1.0.bin

然后运行该文件:

./qt-creator-linux-x86-opensource-2.1.0.bin

下面就可以按照提示安装了。

Qt

 

3.安装Qt库

先解压qt-everywhere-opensource-src-4.7.2.tar.gz:

tar -zxvf qt-everywhere-opensource-src-4.7.2.tar.gz

Qt

 

然后进入到解压后的目录,在编译以前先要配置编译环境:

(这里在新安装的Ubuntu中需要,在其他Linux版本中可能不需要,可以先跳过这一步,如果无法编译,再进行这一步)

sudo apt-get install build-essential

Qt

 

sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev

Qt

 

(注意需要在联网状态下才可执行)完成后,输入以下命令:

./configure

Qt

 

根据提示可能要输入 o(字母)然后回车,然后输入 yes 然后回车,完成后输入以下命令:

./make

Qt

这个根据电脑的配置,可能需要1到2个小时,完成后,输入:

sudo make install

然后输入系统登录密码,这样就完成了Qt库的编译和安装。

 

4.关联Qt Creator和Qt库

这个与在Windows下的方法一样,就是在Qt Creator的工具→选项→Qt4 中手动设置Qt版本,然后选择qmake路径即可。

Qt
Qt

 

完成后还可以选择构建Qt调试助手。

Qt

 

5.源码中出现乱码问题

如果查看源码时显示错误:无法使用“UTF-8”编码解码。无法编辑。

那么请点击后面的“选择编码”按钮,然后选择 GB2312。

Qt

 

如果界面上的中文依然显示乱码,那么请将main.cpp文件中的:

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

更改为:

QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB2312″));

Qt

 

感谢广大网友的支持,对于本书中的任何问题都可以在论坛中进行提问,也可以加入我们的QQ书友群进行交流。最后,如果大家喜欢yafeilinux的Qt教程写作风格,推荐大家购买本套书籍,支持作者,支持Qt的发展。最新的Qt咨询和教程,尽请关注qter.org!  如果有合作意向,可以联系作者yafeilinux@163.com!