第 1章 多线程和多线程同步
1.1 多线程的状态和线程调度 002
1.2 多线程的创建和管理 003
1.3 线程同步 005
1.3.1 互斥量 005
1.3.2 死锁以及解决方案 008
1.3.3 读写锁 008
1.3.4 条件变量 009
1.4 项目案例 1:通过条件变量实现生产者消费者模型 009
1.5 项目案例 2:通过信号量实现生产者消费者模型 011
1.6 项目案例 3:文件管理器多文件复制任务同步 012
1.6.1 线程的使用 013
1.6.2 线程池的使用 015
1.6.3 线程同步 016
第 2 章 套接字和网络编程
2.1 常见网络协议 019
2.2 网络编程接口 020
2.3 IP 地址转换 020
2.3.1 QHostInfo 类 020
2.3.2 QNetworkInterface 类 022
2.3.3 QHostAddress 类 022
2.3.4 QNetworkAddress 类 024
2.4 UDP 通信机制与模型 024
2.5 项目案例 1:统信 UOS 内网通——聊天室 025
2.6 TCP 通信机制、模型与编程 031
2.7 项目案例 2:统信 UOS 内网通——文件传输 031
第3 章D-Bus 进程间通信
3.1 D-Bus 简介 038
3.2 QtDBus 常用类 039
3.3 D-Bus 调试工具 044
3.4 项目案例:统信 UOS 磁盘管理器 046
第4 章数据库操作
4.1 Qt 操作 SQLite 数据库 051
4.2 项目案例 1:统信 UOS 联系人——SQLite存储用户信息 053
4.3 Qt 操作 MySQL 数据库 059
4.4 项目案例 2:统信 UOS 联系人——MySQL存储用户信息 060
第5 章 Qt 高级特性的使用
5.1 Qt 插件系统 063
5.2 项目案例 1:统信 UOS 画板——支持插件的画板程序 064
5.2.1 创建项目 064
5.2.2 定义接口 065
5.2.3 编写主程序 066
5.2.4 编写插件 068
5.2.5 加载插件 069
5.2.6 实际运行 071
5.3 Qt 单元测试 072
5.4 项目案例 2:为程序编写测试程序 073
5.4.1 执行单元测试 075
5.4.2 测试用例的生命周期 077
5.4.3 数据驱动测试 077
5.4.4 图形化测试 080
5.5 polkit 鉴权系统 081
5.5.1 声明动作 083
5.5.2 定义规则 084
5.6 项目案例 3:系统环境变量修改器 085
5.6.1 editor 项目 085
5.6.2 helper 项目 087
5.6.3 检查调用者的权限 089
第6 章Qt 程序的调试与调优
6.1 在 Qt Creator 中调试代码 092
6.1.1 配置调试环境 092
6.1.2 使用 GDB 进行调试 092
6.2 Perf 的介绍与使用 096
6.2.1 Perf 简介 096
6.2.2 CPU 性能分析与火焰图 097
6.2.3 缓存性能分析 100
6.3 Gperftools 103
6.3.1 Thread-Caching Malloc 103
6.3.2 内存检查 104
6.3.3 内存性能分析 107
6.3.4 处理器性能分析 109
6.4 使用 Valgrind 进行内存分析 113
第7 章DTK 的使用
7.1 DTK 简介 118
7.2 安装 DTK 开发包 118
7.3 第 一个 DTK 项目 118
7.4 关于对话框的修改 120
7.5 程序单实例 121
7.6 日志文件 122
7.7 主窗口 122
7.8 自定义标题栏 124
7.9 DTK 中的控件 124
7.9.1 Controls 页面 125
7.9.2 Effects 页面 129
7.10 切换主题 130
7.11 添加设置界面 131
7.12 添加帮助手册 136
第8 章桌面文件规范
8.1 桌面文件介绍 139
8.2 桌面文件基本模板 139
8.3 桌面文件规范 140
8.4 桌面文件完整示例 140
第9 章从 Windows 到 Linux 的程序迁移
9.1 系统现状 143
9.2 程序迁移问题 143
9.3 DeepinWine 144
9.4 客户端软件运行的问题 144
9.5 Web 前端 145
9.6 ActiveX 控件 145
9.7 外围设备 146