Qt5/PyQt5实战指南——手把手教你掌握100个精彩案例

Qt5/PyQt5实战指南——手把手教你掌握100个精彩案例"

作者:白振勇
ISBN:9787302555285
定价:¥129
字数:千字
页数:
出版时间:2020.10.01
开本:
版次:1-3
装帧:
出版社:清华大学出版社
简介

《Qt 5/PyQt 5实战指南——手把手教你掌握100个精彩案例》根据跨平台软件研发工作中对Qt技术的需求,按照循序渐进的原则逐步介绍Qt的各种实用技术。本书分为3部分: 第1部分(第1~14章)讲述C+ + 版的Qt知识,着重介绍Qt的安装配置以及开发环境搭建、Qt项目文件的配置与使用、Qt常用类与常用控件的应用、使用Qt Designer绘制窗体与控件、库的开发与使用、插件开发技术、Qt的MVC机制及应用、SDI与MDI类应用开发技术、Qt多线程应用开发及并发框架、Qt网络应用程序开发技术; 第2部分(第15~22章)讲述PyQt版的开发知识,内容同第一部分大体一致,用Python语言实现并根据Python语言特点省去了部分内容; 第3部分(第23、24章)分别以C++ 语言、Python语言的实战项目为例,讲解Qt技术的综合应用。全书提供了100个应用案例,除第1、23、24章外,每章后均附有配套练习。

《Qt 5/PyQt 5实战指南——手把手教你掌握100个精彩案例》适合作为C++/Python跨平台软件研发工作人员的参考资料,也可作为高等院校计算机、软件工程等相关专业高年级本科生、研究生的参考教材。

前言

一、 为什么要写本书

随着硬件及物联网技术的飞速发展,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月于济南

目录

第1章准备工作

1.1推荐的开发环境

1.2安装Visual Studio 2017

1.3安装Python

1.4安装LLVM

1.5用编译的方式安装Qt 5.11.1

1.6用安装包安装Qt 5.11.1

1.7在Linux上编译代码出错时的处理

1.8配套源代码

第2章pro与pri

2.1案例1通过一个简单的EXE来介绍pro的基本配置

2.2案例2整理一下吧

2.3案例3加点料——增加一张图片

2.4知识点pro文件常用配置

2.5知识点pri文件有什么用

2.6知识点一劳永逸,引入pri体系

2.7案例4还是不知道pri怎么用?来练练手吧

2.8配套练习

第3章多国语言国际化

3.1案例5怎样实现国际化

3.2知识点几种常见的国际化编程场景

3.3知识点中英文翻译失败如何处理

3.4配套练习

第4章打基础

4.1案例6开发一个DLL

4.2知识点使用命名空间

4.3案例7QString的6个实用案例

4.4案例8用qDebug()输出信息

4.5案例9使用QVector处理数组

4.6案例10使用QList处理链表

4.7案例11使用QMap建立映射

4.8案例12万能的QVariant

4.9案例13使用QMessagebox弹出各种等级的提示信息

4.10案例14使用QInputDialog获取多种类型的用户输入

4.11知识点开发自己的公共类库

4.12案例15普通文本文件读写

4.13案例16XML格式的配置文件

4.14知识点INI格式的配置文件

4.15案例17把类对象序列化到二进制文件

4.16案例18从二进制文件反序列化类对象

4.17案例19类的XML格式序列化

4.18知识点类的二进制格式序列化——向后兼容

4.19案例20使用流方式读写XML

4.20知识点使用单体模式实现全局配置

4.21案例21读取GB 13000编码的身份证信息

4.22配套练习

第5章对话框

5.1知识点Qt Designer的使用

5.2知识点在Designer中进行界面布局

5.3案例22对话框——走起

5.4案例23三种编程方式实现信号槽开发

5.5案例24自定义signal与信号转发

5.6案例25disconnect的用途

5.7知识点消息阻塞防止额外触发槽函数

5.8案例26信号槽只能用在对话框里吗

5.9案例27对象之间还能怎么传递消息

5.10知识点编程实现控件嵌套布局

5.11知识点样式

5.12案例28使用QStackedLayout实现向导界面

5.13案例29定时器1

5.14案例30定时器2

5.15配套练习

第6章常用控件

6.1案例31使用QLabel显示文本或图片

6.2案例32使用QLineEdit获取多种输入

6.3案例33使用QComboBox获取用户输入

6.4案例34使用QListWidget展示数据列表

6.5案例35使用QSlider控制进度

6.6配套练习

第7章用QPainter实现自定义绘制

7.1知识点怎样进行自定义绘制

7.2案例36萌新机器人

7.3案例37机器人的新装

7.4配套练习

第8章模型视图代理

8.1知识点Qt的MVC简介

8.2知识点使用QStandardItemModel构建树模型

8.3案例38使用代理实现属性窗

8.4案例39带子属性的属性窗

8.5配套练习

第9章开发SDI应用

9.1案例40开发一个SDI应用

9.2案例41使用自定义视图

9.3案例42添加主菜单

9.4案例43常规工具条

9.5知识点在状态栏上显示鼠标坐标

9.6知识点使用QSplashScreen为程序添加启动画面

9.7知识点工具条反显

9.8案例44打开文件对话框

9.9案例45浮动窗里的列表框

9.10案例46拖放

9.11案例47使用树视图做个工具箱

9.12案例48使用事项窗展示事项或日志

9.13案例49剪切、复制、粘贴

9.14案例50上下文菜单

9.15案例51利用属性机制实现动画弹出菜单

9.16知识点main()函数一般都写什么

9.17配套练习

第10章开发MDI应用

10.1案例52MDI——采用同一类型的View

10.2知识点MDI——采用不同类型的View

10.3配套练习

第11章重写Qt事件

11.1知识点QWidget事件简介

11.2案例53通过重写鼠标事件实现图元移动

11.3案例54通过重写键盘事件实现图元移动

11.4知识点无法切换到中文输入时该怎么办

11.5配套练习

第12章开发插件

12.1知识点什么是插件,插件用来干什么

12.2案例55怎样开发插件

12.3配套练习

第13章开发多线程应用

13.1案例56多线程和互斥锁

13.2知识点多线程应用中如何与主界面通信

13.3案例57使用QtConcurrent处理并发——Map模式

13.4案例58使用QtConcurrent处理并发——MapReduce模式

13.5配套练习

第14章开发网络应用

14.1案例59基于Qt的TCP/IP编程

14.2案例60TCP/IP多客户端编程

14.3配套练习

第15章PyQt 5基础

15.1知识点PyQt 5简介

15.2知识点搭建PyQt 5开发环境

15.3案例61编写第一个PyQt 5程序

15.4案例62给应用加上图片

15.5案例63信号槽初探——窗口A调用窗口B

15.6案例64编写代码实现控件布局

15.7案例65在窗体A中嵌入自定义控件B

15.8案例66使用QLabel显示GIF动画

15.9案例67使用QLineEdit获取多种输入

15.10案例68使用QComboBox获取用户输入

15.11案例69使用QListWidget展示并操作列表

15.12案例70使用QSlider控制进度

15.13案例71使用QMessageBox弹出提示信息

15.14案例72使用QInputDialog获取用户输入

15.15案例73使用QFileDialog获取用户选择的文件名

15.16知识点把程序最小化到系统托盘

15.17配套练习

第16章PyQt 5进程内通信

16.1知识点PyQt 5中的信号槽

16.2案例74使用自定义信号

16.3案例75带参数的自定义信号

16.4知识点信号比槽的参数少该怎么办

16.5案例76使用QTimer实现定时器

16.6知识点使用timerEvent()实现定时器

16.7案例77使用QStackedLayout实现向导界面

16.8配套练习

第17章PyQt 5实现自定义绘制

17.1知识点怎样进行自定义绘制

17.2案例78萌新机器人

17.3案例79机器人的新装

17.4配套练习

第18章PyQt 5中的模型视图代理

18.1知识点使用QStandardItemModel构建树模型

18.2案例80最简单的属性窗

18.3案例81使用代理实现属性窗

18.4案例82自定义属性窗

18.5案例83带子属性的属性窗

18.6配套练习

第19章PyQt 5开发SDI应用

19.1案例84开发一个SDI应用

19.2案例85使用自定义视图

19.3案例86添加主菜单

19.4案例87常规工具条

19.5案例88在状态栏上显示鼠标坐标

19.6知识点使用QSplashScreen为程序添加启动画面

19.7知识点工具条反显

19.8案例89浮动窗里的列表框

19.9案例90拖放

19.10案例91使用树视图做个工具箱

19.11案例92使用事项窗展示事项或日志

19.12案例93剪切、复制、粘贴

19.13案例94上下文菜单

19.14配套练习

第20章PyQt 5开发MDI应用

20.1案例95MDI——采用同一类型的View

20.2知识点MDI——采用不同类型的View

20.3配套练习

第21章PyQt 5事件

21.1案例96通过重写鼠标事件实现图元移动

21.2案例97通过重写键盘事件实现图元移动

21.3配套练习

第22章PyQt 5开发多线程应用

22.1案例98多线程和互斥锁

22.2知识点多线程应用中如何刷新主界面

22.3配套练习

第23章项目实战——敏捷看板(C++版)

23.1知识点项目实战准备——访问SQLite数据库

23.2知识点项目实战准备——使用QCustomPlot绘制曲线

23.3案例99项目实战——敏捷看板

第24章项目实战——敏捷看板(PyQt版)

24.1知识点项目实战准备——访问SQLite数据库

24.2知识点项目实战准备——用Matplotlib绘制曲线

24.3案例100项目实战——敏捷看板

附录APyQt 5常用类所在模块

参考文献

作者简介

编辑推荐

(1)兼顾Qt 5、PyQt 5。既有C++语言的Qt 5知识,又有Python语言的PyQt 5的知识。通过学习两种编程语言的案例,可以更好地满足实际研发工作对编程技能的需求。

(2)真正实用。重点关注软件设计及实战技能,而非罗列一堆控件接口说明,比如:在开发大型项目时pri文件的设计与使用、配置文件的开发方法、类对象的二进制文件的序列化等都属于实用的软件研发技术案例。

(3)系统性组织案例。内容组织上掌握循序渐进原则,前面的案例为后面的案例打基础,提倡的理念是传授跨平台界面开发中用到的系统性解决方案。

(4)拒绝从零开始。配套程序代码含有改动前的基础代码和改动后的最终代码。通过利用Winmerge等对比软件,对比改动前、改动后的代码,查看改动的具体内容,便于加深对案例的理解。

作者寄语

白振勇  2000年毕业于山东工业大学,20年来一直从事跨平台监控系统的设计、研发工作;曾因iES-DMS1000 Extreme配电自动化主站系统荣获山东省科技进步二等奖,获得3项国家发明专利;带领团队利用Qt 5开发的图形平台已成为公司主营产品的核心支撑组件。

电子资料

www.luweidong.cn

下一个