我们编写的新书《Qt 6 C++开发指南》在2月份终于正式发行销售了,这本书是对2018年5月出版的《Qt 5.9 C++开发指南》的重磅升级。以下是本书前言的部分内容,算是对《Qt 6 C++开发指南》的一个简介。
1.编写本书的目的
《Qt 5.9C++开发指南》是我写的第一本书,于2018年5月出版,至2022年7月已经31次印刷。这本书是比较成功的一本书,但是写这本书是一件无心插柳的事情,而且因为是我写的第一本书,其中或多或少还存在一些问题,例如有读者反映写得不够详细、缺少专门介绍事件处理的章节等。
2020年12月底,Qt 6.0正式发布。Qt 6是一个新的主版本,它对Qt的一些底层进行了重大革新,引入了新的图形架构、CMake构建系统和其他很多新特性。Qt6舍弃了Qt 5中的一些类和接口函数,同时新增了一些类和接口函数,一些模块被完全重新改写,例如Qt 6的多媒体模块与Qt 5的完全不兼容。
Qt 5.15是Qt 5的最后一个长期支持(long term supported,LTS)版本,Qt 6.0在2020年12月发布时并不包含Qt 5.15中的所有模块,在后续发布的版本中又陆续增加了一些模块。Qt 6.1在2021年5月发布,增加了Charts、Data Visualization等模块。Qt 6.2在2021年9月发布,增加了Multimedia、SerialPort等模块。Qt 6.2是Qt 6系列的第一个LTS版本,它补齐了Qt框架中的主要模块。
由于Qt 6与Qt 5存在较大差异,如果读者根据《Qt 5.9 C++开发指南》来学习Qt6 C++编程,难免会遇到各种问题。于是,在Qt 6.0发布时,我们就有了撰写《Qt6 C++开发指南》的计划。本书是基于Qt 6.2编写的,它是《Qt5.9 C++开发指南》的升级版本,但并不是对《Qt 5.9 C++开发指南》的简单文字修改和程序升级,而几乎是完全重新编写的。为了使内容更符合循序渐进的学习过程,全书的章节内容被重新编排,并增加了一些新的章节,内容也更为详细,目的是使本书成为大家学习Qt 6 C++编程的最佳选择。
2.本书内容概述
本书系统地介绍了使用Qt C++开发应用程序所涉及的技术原理和主要功能模块的使用方法。全书共18章,章节内容基本是按照循序渐进的学习顺序编排的。
第1章是对Qt的介绍,使初学者对Qt有总体的了解。
第2章介绍GUI程序设计的基础,包括GUI应用程序的基本结构和工作原理、界面可视化设计方法、图标等资源的使用、CMake构建系统等。通过第2章的内容就能够了解Qt C++开发GUI应用程序的基本方法,后续的学习就只是各种界面组件和功能模块的使用了。
第3章介绍Qt框架中的一些底层功能和类,特别是元对象系统。元对象系统是Qt的核心功能,包含信号与槽、属性系统、对象树等功能。深入理解元对象系统的功能和使用方法,可以更灵活地运用Qt的编程功能。
第4章介绍常用界面组件的使用,学会了这些组件的使用,就可以设计一般的GUI应用程序了。
第5章至第17章介绍GUI应用程序开发中常用的一些编程技术和功能模块的使用,包括模型/视图结构、事件处理、对话框和多窗口程序设计、文件读写等功能的编程方法,以及数据库、多线程、网络、多媒体、串口通信等功能模块的使用。读者可以根据自己的需要学习相应的章节。
第18章介绍了Qt中辅助GUI应用程序开发的一些技术和工具软件的使用,包括设计多语言界面的应用程序,使用Qt样式表设计自定义界面效果,发布Qt编写的应用程序并制作安装文件。
本书的内容几乎是全部重新编写的,即使是《Qt 5.9 C++开发指南》中已有的一些章节和示例,也重新整理了文字表述,对相关程序进行了优化。相对于《Qt 5.9 C++开发指南》,本书变动较大的内容如下:
新增了第6章,详细介绍事件处理的编程方法。
新增了第17章,介绍串口通信编程,这对于工控相关专业人员编写上位机程序是比较实用的。
第16章的内容是全新的,因为Qt 6的多媒体模块是全新的,与Qt 5的多媒体模块完全不兼容。
第10章中增加了图像处理的编程内容,介绍用QImage实现简单的图像处理,以及打印功能的编程实现方法。
第18章中增加了对Qt Install Framework软件的介绍,使用该软件可以为发布的Qt应用程序制作安装文件。
本书包含大量完整的示例项目,读者可以从人民邮电出版社异步社区下载本书所有示例的源代码。同时,为了便于读者查看示例的运行效果,以及避免因使用不同版本的Qt编译示例项目时可能出现错误,我们专门为本书示例编写了一个软件,将全书所有示例的可执行文件集成到这个软件里。通过运行此软件,读者可以浏览本书所有的示例,每个示例有简介和主要界面截图(如图0所示),双击一个示例节点就可以运行该示例的可执行文件。该软件用Qt6.2开发,使用Qt Install Framework制作了安装文件。
3.本书特点和使用约定
本书只介绍Qt C++编程,不涉及Qt支持的另一种语言QML的编程,也不涉及Qt for Python的编程,有关这些内容需要查看专门的书。Qt的内容范围非常广泛,本书只介绍了GUI应用程序设计中常用的一些技术和功能模块。读者通过学习本书的内容并掌握Qt C++开发GUI应用程序的方法后,就可以在实际开发中解决具体的问题,以及自学新的模块或类的使用。
本书包含大量示例项目,有些示例项目具有一定的难度,这也是本书的一大特点。学习编程需要动手实践,单纯看书是无法学会编程的。要想完全掌握本书的内容,将书中的示例自己编程实现一遍是最有效的方法。
本书不适合对C++语言零基础的读者阅读。读者需要基本掌握C++语言编程的基本原理并对类的概念和使用比较熟悉后,再学习本书的内容。
本书介绍GUI应用程序设计时,一般采用QtDesigner进行可视化界面设计,而不会采用纯代码方式设计用户界面,这是因为使用可视化方法设计用户界面效率更高,也更适合初级水平的编程者。当然,本书也介绍了创建界面和布局的代码的原理,读者了解这些原理后,就可以看懂以纯代码方式创建界面的程序。
Qt 6中引入了CMake构建系统,本书第2章会介绍CMake构建系统的基本用法。CMake功能强大,更适用于大型项目的管理。要完全掌握并灵活使用CMake比较难,因此本书的绝大部分示例仍使用qmake构建系统。
本书所有示例的开发环境和测试环境是Qt 6.2.3 MinGW 64-bit,Qt 6.2.3 MSVC2019 64bit,Qt Creator6.0.2,Windows 10。