初级篇 2
第1章 Qt初步实践 2
1.1 第一个Qt程序 2
1.1.1 建立主程序 2
1.1.2 建立工程 3
1.1.3 编译/运行第一个Qt应用程序 8
1.1.4 第一个Qt程序的代码分析 8
1.2 使用Qt布局管理器 11
1.3 关联操作 12
1.4 小结 13
第2章 对话框——QDialog 14
2.1 自定义对话框 14
2.1.1 建立新类 14
2.1.2 添加子窗口部件 15
2.2 加入主程序 22
2.3 Qt内建(built-in)对话框 24
2.4 小结 34
第3章 基础窗口部件——QWidget 35
3.1 Qt设计器绘制窗口部件 35
3.1.1 Qt设计器基础 35
3.1.2 绘制窗口部件 40
3.2 程序中引入自定义窗口部件 47
3.2.1 直接使用方式 47
3.2.2 单一继承方式 49
3.2.3 多继承方式 51
3.3 Qt的信号和槽机制 53
3.3.1 基本原理 53
3.3.2 设计信号和槽 55
3.3.3 信号和槽的自动关联 62
3.4 窗口标志及几何布局 63
3.4.1 窗口标志 64
3.4.2 窗口部件的几何布局 66
3.5 Qt样式表 74
3.5.1 样式表语法 74
3.5.2 样式表的应用 76
3.6 Qt对象模型 79
3.6.1 元对象系统 79
3.6.2 属性系统 80
3.6.3 对象树 83
3.7 小结 86
第4章 程序主窗口——QMainWindow 87
4.1 QMainWindow主窗口框架 87
4.2 Qt设计器绘制主窗口 88
4.2.1 菜单 90
4.2.2 工具栏 93
4.2.3 中心部件 96
4.3 代码创建主窗口 98
4.3.1 创建资源文件 98
4.3.2 定义主窗口类 98
4.4 锚接部件 102
4.5 状态栏 105
4.6 实现文本编辑器功能 107
4.7 多文档 118
4.8 打印文档 119
4.9 小结 120
第5章 布局管理 121
5.1 Qt布局管理器——QLayout 121
5.1.1 Qt布局管理器简介 121
5.1.2 布局管理器及窗口部件大小策略的应用 125
5.2 分裂器部件QSplitter 132
5.3 栈部件QStackedWidget 134
5.4 工作空间部件QWorkspace 135
5.5 多文档区部件QMdiArea 148
5.6 小结 150
中级篇 152
第6章 2D绘图 152
6.1 Arthur绘图基础 152
6.1.1 绘图 152
6.1.2 绘图设备 174
6.2 坐标系统与坐标变换 175
6.2.1 坐标系统 175
6.2.2 坐标变换 175
6.3 用不同的字体 177
6.4 绘图路径——QPainterPath 180
6.5 QImage与QPixmap绘图设备 182
6.5.1 QImage 182
6.5 2 Pixmap 183
6.6 组合模式绘图 192
6.7 Graphics View框架 200
6.7.1 Graphics View体系结构 200
6.7.2 Graphics View坐标系统 201
6.7.3 深入Graphics View 202
6.8 图形图像打印 208
6.8.1 普通打印过程 208
6.8.2 特殊窗口部件的打印 210
6.9 小结 211
第7章 拖放操作和剪贴板 212
7.1 拖放操作 212
7.1.1 拖放操作 212
7.1.2 定义新的拖放操作类型 214
7.1.3 Graphics View框架下的拖放操作 215
7.2 使用剪贴板 217
7.3 小结 218
第8章 文件处理 219
8.1 读写文本文件 219
8.2 操作二进制文件 220
8.3 临时文件 222
8.4 目录操作和文件管理 222
8.4.1 目录操作 222
8.4.2 文件管理 224
8.5 监视文件系统变化 225
8.6 文件引擎 226
8.7 小结 226
第9章 网络 227
9.1 FTP客户端 227
9.2 HTTP客户端 235
9.3 UDP应用 239
9.4 TCP应用 243
9.5 高级应用 253
9.5.1 底层操作 253
9.5.2 使用代理 256
9.5.3 扩展Qt网络功能 256
9.5.4 效率问题 260
9.6 小结 260
第10章 多线程 261
10.1 启动一个线程 261
10.2 线程互斥与同步 264
10.2.1 临界区问题 265
10.2.2 使用QMutex 265
10.2.3 使用QSemaphore 266
10.2.4 使用QWaitConditon 269
10.3 线程的其他问题 271
10.3.1 优先级问题 271
10.3.2 死锁及优先级反转问题 274
10.3.3 本地存储问题 275
10.4 Qt的线程机制 276
10.4.1 可重入与线程安全 276
10.4.2 线程与事件循环 277
10.4.3 线程与信号/槽机制 278
10.4.4 多线程网络示例 279
10.5 小结 282
第11章 事件处理 283
11.1 事件机制 283
11.1.1 事件来源与类型 283
11.1.2 事件处理方法 284
11.2 事件处理器 285
11.3 事件过滤器 290
11.4 加快用户界面响应 292
11.4.1 使用processEvents()函数 293
11.4.2 使用定时器 294
11.5 小结 296
第12章 数据库 297
12.1 连接数据库 297
12.2 常用数据库操作 301
12.2.1 使用SQL语句 302
12.2.2 事务操作 304
12.2.3 使用SQL模型类 304
12.2.4 数据表示 308
12.3 Qt数据库应用 310
12.3.1 使用嵌入式数据库 310
12.3.2 使用Oracle数据库 313
12.4 小结 325
第13章 Qt的模板库和工具类 326
13.1 Qt容器类 326
13.1.1 QList、QLinkedList和QVector 327
13.1.2 QMap、QHash 332
13.2 QString 334
13.2.1 隐式共享 335
13.2.2 内存分配策略 336
13.2.3 操作字符串 336
13.2.4 查询字符串数据 337
13.2.5 字符串的转换 338
13.3 QVariant 339
13.4 Qt的算法 341
13.5 正则表达式 342
13.5.1 基本的正则表达式 342
13.5.2 文字捕获 344
13.6 小结 345
高级篇 348
第14章 XML 348
14.1 DOM 348
14.1.1 DOM入门 348
14.1.2 使用DOM 348
14.1.3 使用DOM写XML文件 352
14.2 SAX 354
14.3 基于流的XML API 359
14.4 小结 365
第15章 模型/视图结构 366
15.1 模型/视图结构与MVC设计模式 366
15.1.1 模型 366
15.1.2 视图 367
15.1.3 代理 368
15.2 使用已有的模型视图类 368
15.2.1 使用已有的模型和视图类 368
15.2.2 QListWidget、QtreeWidget和QTableWidget 370
15.3 模型(Models) 381
15.3.1 模型索引 381
15.3.2 模型角色 382
15.3.3 自定义模型 382
15.3.4 代理模型 385
15.4 视图(Views) 390
15.4.1 自定义视图 390
15.4.2 数据-窗口部件映射 390
15.5 代理(Delegates) 396
15.5.1 使用已有的代理 396
15.5.2 自定义代理 396
15.6 拖放与选中 401
15.6.1 拖放操作 401
15.6.2 选中模式 404
15.7 小结 405
第16章 高级绘图 406
16.1 3D绘图——使用OpenGL 406
16.1.1 创建OpenGL窗口 406
16.1.2 着色 410
16.1.3 3D和旋转 411
16.1.4 纹理贴图 414
16.2 SVG 417
16.2.1 绘制SVG图形 418
16.2.2 生成SVG文件 419
16.3 小结 420
第17章 进程与进程间通信 421
17.1 使用QProcess 421
17.2 Linux进程间通信 423
17.3 新型进程间通信——D-Bus 425
17.3.1 D-Bus简介 425
17.3.2 安装QtDBus模块 427
17.3.3 接口与适配器 429
17.3.4 QtDBus应用实例 432
17.4 小结 441
第18章 Qt插件 442
18.1 Qt插件开发基础 442
18.2 Qt设计器插件 443
18.2.1 使用Scratchpad 443
18.2.2 提升自定义窗口部件 444
18.2.3 Qt设计器插件开发 444
18.3 编写数据库插件 451
18.4 自定义风格插件 455
18.5 小结 458
第19章 脚本——QtScript 459
19.1 执行ECMAScript脚本 459
19.2 QtScript中的信号和槽 460
19.3 使用JavaScript操作Qt对象 463
19.4 基于Prototype的继承 467
19.5 小结 467
第20章 国际化 468
20.1 Unicode与字符编码 468
20.1.1 Unicode 468
20.1.2 汉字编码 469
20.1.3 编码转换 469
20.2 Qt Linguist 471
20.2.1 发布管理器 472
20.2.2 翻译器 474
20.2.3 加载翻译文件 476
20.3 语言切换 477
20.4 小结 477
第21章 Qt单元测试框架 478
21.1 QTestLib框架 478
21.1.1 QTestLib 478
21.1.2 第一个Qt单元测试 478
21.2 数据驱动测试 480
21.3 GUI测试 481
21.2.1 仿真GUI事件 481
21.2.2 重放GUI事件 483
21.3 小结 484
附录A Qt安装 485
附录B Qt集成开发环境 492
附录C qmake速查 501
附录D 深入Qt源代码 506
附录E Qt资源 512