前言
一、 为什么要写本书
随着硬件及物联网技术的飞速发展,PC、平板、手机、智能硬件等越来越多地出现在人们的日常生活中,而为这些硬件设备开发软件已经成为跨平台软件研发工作中非常迫切的需求。Qt作为一款杰出的第三方C++跨平台类库,已经成为跨平台软件研发工作中一个重要支撑。Qt诞生于20世纪90年代初,目前已发布5.15版(截至本书出版时),Qt可运行于Windows/Linux/Unix等操作系统上。Qt既可以用来开发跨平台界面类应用,也可以用来开发跨平台服务器应用。虽然Qt自带非常丰富的Demo以及非常棒的帮助文档,但是对于初学者来说,一本实用的开发指导书还是首选。目前市面上关于跨平台软件研发的书籍少之又少,更别说用来指导一线研发工作的实战指南了,因此本书应运而生。
本书紧扣跨平台软件开发工作的实际需求,采用系统的、循序渐进的方式,从一个个实用案例出发,讲述利用Qt进行开发的各种实用技能; 此外,本书还分享了大量的案例程序代码,有助于读者加深对各章节内容的理解。
二、 内容特色
与同类书籍相比,本书有如下特色。
(1) 兼顾Qt 5、PyQt 5。
本书既有C++语言的Qt 5知识,又有Python语言的PyQt 5知识。本书设计了100个应用案例,其中C++版的Qt 5案例61个,PyQt 5版的案例39个。通过学习两种编程语言的案例,可以更好地满足实际研发工作对编程技能的需求。
(2) 真正实用。
重点关注软件设计及实战技能,而非罗列一堆控件接口说明。主张将学到的技巧应用到日常的软件开发工作中,比如: 在开发大型项目时pri文件的设计与使用、配置文件的开发方法、类对象的二进制文件的序列化、向前兼容的二进制文件格式设计、带子属性的属性窗等都属于实用的软件研发技术案例。
(3) 系统性组织案例。
有利于系统地学习开发技能。本书在内容组织上掌握循序渐进原则,前面的案例为后面的案例打基础。本书提倡的理念是传授跨平台界面开发中用到的系统性解决方案,只要掌握了方法,就有能力自行查阅资料解决问题,毕竟再全面的图书也不可能把Qt的所有知识都包含进来。
(4) 配套练习,加深理解。
除第1、23、24章外,每章后均附有配套练习,本书提供超过140道配套练习题(见配套资源)。通过针对性练习,可以加深对知识的理解与掌握,更快投入真正的研发工作。
(5) 拒绝从零开始。
配套的程序代码中含有改动前的基础代码和改动后的最终代码。在阅读时,读者可以在改动前的基础代码上对照案例讲解的内容直接进行修改,这样可以有效提高学习效率、方便练手。通过利用Winmerge等对比软件,也可以对比改动前、改动后的代码,查看改动的具体内容,便于加深对案例的理解。在案例开头一般都配有运行效果图。
(6) 配套资源,超值服务。
本书提供以下配套资源:
配套资源
●程序代码、补充习题、辅助资料等,请扫描此处二维码或到清华大学出版社本书页面下载。
●微课视频(时长共2000分钟),请扫描各章节对应位置二维码观看,读者可跟随视频中演示的步骤进行学习。
●想获取更多跨平台开发知识,请关注微信公众号“软件特攻队”(详见配套资源)。
注意: 请先刮开封四的刮刮卡,扫描刮开的二维码进行注册,之后再扫描书中的二维码,获取相关资料。
三、 阅读建议
●先下载本书附带的源代码(见配套资源中),阅读本书时请查阅对应源代码进行学习。
●本书的源代码分为两部分: 改动前的代码在src.baseline目录中,各案例以改动前的代码为基础进行修改; 改动后的最终代码在src中。
●第1章为环境搭建及准备工作,C++版的内容在第2~14章,PyQt 5版的内容在第15~22章,第23、24章分别为C++版、PyQt 5版的实战案例。请根据需求进行阅读。
●在学习C++版的内容时,请先阅读第1~7章。
●在文中进行描述时,有的接口只写了接口名称,但是并未写明详细的参数列表,请根据上下文理解。
●因篇幅所限,文中部分代码做了省略,请查看附带的源代码。为了节省篇幅,PyQt 5案例代码中删除了函数之间的空行。
●附录A列出了PyQt 5常用类所在模块,电子文档见配套资源,便于开发时查询。
四、 读者对象
●有一定C++/Python基础的软件爱好者;
●C++跨平台软件研发人员或者PyQt 5研发人员;
●计算机科学与技术相关专业并且有C++、Python基础的本科生、研究生。
五、 致谢
感谢清华大学出版社的刘星编辑在本书的编写、校对过程中所付出的辛勤劳动,尤其是对我的耐心指导与答疑。感谢广大网友的信任、支持与鼓励,是你们给我带来了写作动力。
感谢我的父母、妻子一直以来对我的关心、照顾与支持。感谢我的女儿带给我的快乐与惊喜。
限于编者的水平和经验,加之时间比较仓促,疏漏或者错误之处在所难免,敬请读者批评指正。有兴趣的朋友可发送邮件至workemail6@163com,与本书策划编辑进行交流。
编者
2020年7月于济南
