初级篇 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程序的代码分析 9
1.2 使用Qt布局管理器 11
1.3 关联操作 12
1.4 小结 13
第2章 对话框——QDialog 14
2.1 自定义对话框 14
2.1.1 建立新类 14
2.1.2 添加子窗口部件 16
2.2 加入主程序 22
2.3 Qt内建(built-in)对话框 25
2.4 小结 35
第3章 基础窗口部件——QWidget 36
3.1 Qt设计器绘制窗口部件 36
3.1.1 Qt设计器基础 36
3.1.2 绘制窗口部件 41
3.2 程序中引入自定义窗口部件 49
3.2.1 直接使用方式 49
3.2.2 单一继承方式 51
3.2.3 多继承方式 54
3.3 Qt的信号和槽机制 55
3.3.1 基本原理 55
3.3.2 设计信号和槽 58
3.3.3 信号和槽的自动关联 66
3.4 窗口标志及几何布局 66
3.4.1 窗口标志 67
3.4.2 窗口部件的几何布局 69
3.5 Qt对象模型 77
3.5.1 元对象系统 78
3.5.2 属性系统 79
3.5.3 对象树 82
3.6 隐式共享 85
3.7 小结 86
第4章 程序主窗口——QMainWindow 87
4.1 QMainWindow主窗口框架 87
4.2 Qt设计器绘制主窗口 88
4.2.1 菜单 91
4.2.2 工具栏 94
4.2.3 中心部件 97
4.3 代码创建主窗口 99
4.3.1 创建资源文件 99
4.3.2 定义主窗口类 99
4.4 锚接部件 104
4.5 状态栏 107
4.6 实现文本编辑器功能 109
4.7 多文档 120
4.8 打印文档 122
4.9 小结 123
第5章 布局管理 124
5.1 Qt布局管理器——QLayout 124
5.1.1 Qt布局管理器简介 124
5.1.2 布局管理器及窗口部件大小策略的应用 128
5.2 分裂器部件QSplitter 137
5.3 栈部件QStackedWidget 138
5.4 工作空间部件QWorkspace 139
5.5 多文档区部件QMdiArea 153
5.6 小结 155
中级篇 158
第6章 2D绘图 158
6.1 Arthut绘图基础 158
6.1.1 绘图 158
6.1.2 绘图设备 182
6.2 坐标系统与坐标变换 183
6.2.1 坐标系统 183
6.2.2 坐标变换 183
6.3 用不同的字体 184
6.4 绘图路径——QPainterPath 188
6.5 QImage与QPixmap绘图设备 190
6.5.1 Qlmage 190
6.5.2 Pixmap 192
6.6 组合模式绘图 201
6.7 小结 210
第7章 Graphics View框架 211
7.1 Graphics View概述 211
7.1.1 Graphics View体系结构 211
7.1.2 Graphics View坐标系统 212
7.1.3 深入Graphics View 213
7.2 图形效果 221
7.3 图形图像打印 222
7.3.1 普通打印过程 222
7.3.2 特殊窗口部件的打印 223
7.4 小结 224
第8章 拖放操作和剪贴板 225
8.1 拖放操作 225
8.1.1 拖放操作 225
8.1.2 定义新的拖放操作类型 228
8.1.3 Graphics View框架下的拖放操作 228
8.2 使用剪贴板 230
8.3 小结 231
第9章 文件处理 232
9.1 读写文本文件 232
9.2 操作二进制文件 234
9.3 临时文件 236
9.4 目录操作和文件管理 236
9.4.1 目录操作 236
9.4.2 文件管理 238
9.5 监视文件系统变化 238
9.6 文件引擎 240
9.7 小结 240
第10章 网络 241
10.1 FTP客户端 241
10.2 HTTP客户端 250
10.3 UDP应用 254
10.4 TCP应用 258
10.5 高级应用 269
10.5.1 底层操作 269
10.5.2 使用代理 272
10.5.3 扩展Qt网络功能 272
10.5.4 效率问题 276
10.6 小结 277
第11章 多线程 278
11.1 启动一个线程 278
11.2 线程互斥与同步 282
11.2.1 临界区问题 282
11.2.2 使用QMutex 283
11.2.3 使用QSemaphore 284
11.2.4 使用QWaitConditon 286
11.3 线程的其他问题 289
11.3.1 优先级问题 289
11.3.2 死锁及优先级反转问题 292
11.3.3 本地存储问题 294
11.4 Qt的线程机制 295
11.4.1 可重入与线程安全 295
11.4.2 线程与事件循环 296
11.4.3 线程与信号/槽机制 297
11.4.4 多线程网络示例 298
11.5 并行计算 302
11.5.1 利用QtConcurrent启动线程 302
11.5.2 图片浏览器示例 303
11.6 小结 307
第12章 事件处理 308
12.1 事件机制 308
12.1.1 事件来源与类型 308
12.1.2 事件处理方法 309
12.2 事件处理器 310
12.3 事件过滤器 315
12.4 加快用户界面响应 318
12.4.1 使用processEvents()函数 318
12.4.2 使用定时器 320
12.5 小结 322
第13章 数据库 323
13.1 连接数据库 323
13.2 常用数据库操作 328
13.2.1 使用SQL语句 328
13.2.2 事务操作 330
13.2.3 使用SQL模型类 331
13.2.4 数据表示 335
13.3 Qt数据库应用 337
13.3.1 使用嵌入式数据库 337
13.3.2 使用Oracle数据库 340
13.4 小结 352
高级篇 354
第14章 界面风格 354
14.1 使用Qt风格 354
14.2 简单自定义风格 355
14.2.1 界面设计 355
14.2.2 自定义界面外观 356
14.2.3 换肤 372
14.3 Qt风格原理 376
14.3.1 风格元素 377
14.3.2 风格选项 381
14.3.3 风格函数 383
14.3.4 风格调色板 384
14.3.5 风格绘制过程 386
14.4 高级自定义风格 390
14.5 Qt样式表 407
14.5.1 样式表语法 407
14.5.2 样式表的应用 409
14.6 小结 412
第15章 XML 413
15.1 DOM 413
15.1.1 DOM入门 413
15.1.2 使用DOM 414
15.1.3 使用DOM写XML文件 417
15.2 SAX 420
15.3 基于流的XML API 425
15.4 QtXmlPatterns模块 431
15.4.1 XSLT 431
15.4.2 XQuery 433
15.4.3 XML Schema 437
15.5 小结 442
第16章 模型/视图结构 443
16.1 模型/视图结构与MVC设计模式 443
16.1.1 模型 444
16.1.2 视图 444
16.1.3 代理 445
16.2 使用已有的模型视图类 445
16.2.1 使用已有的模型和视图类 445
16.2.2 QListWidget、QTreeWidget和QTableWidget 447
16.3 模型(Models) 459
16.3.1 模型索引 459
16.3.2 模型角色 460
16.3.3 自定义模型 461
16.3.4 代理模型 464
16.4 视图(Views) 469
16.4.1 自定义视图 469
16.4.2 数据-窗口部件映射 469
16.5 代理(Delegates) 475
16.5.1 使用已有的代理 475
16.5.2 自定义代理 475
16.6 拖放与选中 481
16.6.1 拖放操作 481
16.6.2 选中模式 484
16.7 小结 485
第17章 高级绘图 486
17.1 3D绘图——使用OpenGL 486
17.1.1 创建OpenGL窗口 486
17.1.2 着色 490
17.1.3 3D和旋转 491
17.1.4 纹理贴图 495
17.2 SVG 498
17.2.1 绘制SVG图形 498
17.2.2 生成SVG文件 500
17.3 小结 501
第18章 进程与进程间通信 502
18.1 使用QProcess 502
18.2 Linux进程间通信 505
18.3 共享内存与本地Socket 506
18.4 新型进程间通信——D-Bus 512
18.4.1 D-Bus简介 513
18.4.2 接口与适配器 514
18.4.3 QtDBus应用实例 517
18.5 小结 527
第19章 Qt插件 528
19.1 Qt插件开发基础 528
19.2 Qt设计器插件 529
19.2.1 使用Scratchpad 529
19.2.2 提升自定义窗口部件 530
19.2.3 Qt设计器插件开发 531
19.3 编写数据库插件 538
19.4 自定义风格插件 542
19.5 小结 545
第20章 脚本——QtScript 546
20.1 执行ECMAScript脚本 546
20.2 QtScript中的信号和槽 547
20.3 使用JavaScript操作Qt对象 550
20.4 基于Prototype的继承 554
20.5 QtScript调试器 555
20.6 小结 556
第21章 国际化 557
21.1 Unicode与字符编码 557
21.1.1 Unicode 557
21.1.2 汉字编码 558
21.1.3 编码转换 558
21.2 Qt Linguist 561
21.2.1 发布管理器 561
21.2.2 翻译器 563
21.2.3 加载翻译文件 566
21.3 语言切换 566
21.4 小结 567
第22章 Qt单元测试框架 568
22.1 QTestLib框架 568
22.1.1 QTestLib 568
22.1.2 第一个Qt单元测试 569
22.2 数据驱动测试 570
22.3 GUI测试 572
22.3.1 仿真GUI事件 572
22.3.2 重放GUI事件 573
22.4 基准测试 574
22.5 小结 575
第23章 动画与状态机框架 576
23.1 动画框架 576
23.2 状态机框架 578
23.3 实例分析 582
23.4 小结 594
第24章 WebKit与多媒体 595
24.1 WebKit 595
24.1.1 基于WebKit的浏览器 595
24.1.2 添加OpenSSL支持 596
24.1.3 Qt WebKit编程 597
24.2 Phonon多媒体框架 597
24.2.1 Phonon体系结构 597
24.2.2 Phonon媒体播放器 600
24.3 小结 606
第25章 嵌入式Qt 607
25.1 Windows Mobile平台 607
25.1.1 Windows Mobile平台Qt应用开发流程 607
25.1.2 部署Qt应用程序 611
25.1.3 使用移动电话仿真器 613
25.2 嵌入式Linux平台 614
25.2.1 嵌入式Linux平台Qt体系结构 614
25.2.2 开发环境配置 616
25.3 嵌入式Qt的裁剪 618
25.4 小结 618
附录A Qt安装 619
附录B Qt集成开发环境 624
附录C qmake速查 631
附录D Qt资源 636