第1章 认识Qt 1
1.1 Qt简介 1
1.2 Qt的获取与安装 1
1.2.1 Qt的许可类型 1
1.2.2 Qt的版本 2
1.2.3 Qt的下载与安装 2
1.3 Qt Creator初步使用 5
1.3.1 Qt Creator的界面组成 5
1.3.2 Qt Creator的设置 6
1.4编写一个Hello World程序 7
1.4.1新建一个项目 7
1.4.2项目的文件组成和管理 10
1.4.3项目的编译、调试与运行 11
1.5在Visual Studio里使用Qt 13
第2章 GUI应用程序设计基础 16
2.1 UI文件设计与运行机制 16
2.1.1项目文件组成 16
2.1.2项目管理文件 16
2.1.3界面文件 17
2.1.4主函数文件 19
2.1.5窗体相关的文件 20
2.2可视化UI设计 25
2.2.1实例程序功能 26
2.2.2界面组件布局 26
2.2.3信号与槽 29
2.2.4可视化生成槽函数原型和框架 30
2.3代码化UI设计 34
2.3.1实例功能 34
2.3.2界面创建 34
2.3.3信号与槽的关联 37
2.4混合方式UI设计 37
2.4.1设计目的 37
2.4.2创建项目并添加资源文件 38
2.4.3设计Action 39
2.4.4设计菜单和工具栏 41
2.4.5代码创建其他界面组件 44
2.4.6 Action的功能实现 45
2.4.7手工创建的组件的信号与槽 47
2.4.8为应用程序设置图标 48
2.5 Qt Creator使用技巧 48
第3章 Qt类库概述 50
3.1 Qt核心特点 50
3.1.1概述 50
3.1.2元对象系统 50
3.1.3属性系统 52
3.1.4信号与槽 53
3.1.5元对象特性测试实例 55
3.2 Qt全局定义 59
3.2.1数据类型定义 60
3.2.2函数 60
3.2.3宏定义 61
3.3容器类 62
3.3.1容器类概述 62
3.3.2顺序容器类 63
3.3.3关联容器类 64
3.4容器类的迭代 66
3.4.1 Java类型迭代器 66
3.4.2 STL类型迭代器 68
3.4.3 foreach关键字 69
3.5 Qt类库的模块 70
3.5.1 Qt基本模块 71
3.5.2 Qt附加模块 71
3.5.3增值模块 72
3.5.4技术预览模块 72
3.5.5 Qt工具 73
第4章 常用界面设计组件 74
4.1字符串与输入输出 74
4.1.1字符串与数值之间的转换 74
4.1.2 QString的常用功能 76
4.2 SpinBox的使用 78
4.3其他数值输入和显示组件 80
4.3.1实例功能 80
4.3.2各组件的主要功能和属性 80
4.3.3实例功能的代码实现 82
4.4时间日期与定时器 84
4.4.1时间日期相关的类 84
4.4.2日期时间数据与字符串之间的转换 84
4.4.3 QCalendarWidget日历组件 87
4.4.4定时器的使用 87
4.5 QComboBox和QPlainTextEdit 89
4.5.1实例功能概述 89
4.5.2 QComboBox的使用 89
4.5.3 QPlainTextEdit的使用 91
4.6 QListWidget和QToolButton 93
4.6.1实例功能简介 93
4.6.2界面设计 94
4.6.3 QListWidget的操作 97
4.6.4 QToolButton与下拉式菜单 99
4.6.5创建右键快捷菜单 101
4.7 QTreeWidget和QDockWidget 102
4.7.1实例功能概述 102
4.7.2界面设计 103
4.7.3 QTreeWidget操作 105
4.7.4 QLabel和Qpixmap显示图片 110
4.7.5 QDockWidget的操作 111
4.8 QTableWidget的使用 112
4.8.1 QTableWidget概述 112
4.8.2界面设计与初始化 113
4.8.3 QTableWidget操作 114
第5章 Model/View结构 120
5.1 Model/View结构 120
5.1.1 Model/View基本原理 120
5.1.2数据模型 121
5.1.3视图组件 122
5.1.4代理 122
5.1.5 Model/View结构的一些概念 123
5.2 QFileSystemModel 125
5.2.1 QFileSystemModel类的基本功能 125
5.2.2 QFileSystemModel的使用 125
5.3 QStringListModel 127
5.3.1 QstringListModel功能概述 127
5.3.2 QStringListModel的使用 127
5.4 QStandardItemModel 130
5.4.1功能概述 130
5.4.2界面设计与主窗口类定义 131
5.4.3 QStandardItemModel的使用 132
5.5自定义代理 139
5.5.1自定义代理的功能 139
5.5.2自定义代理类的基本设计要求 139
5.5.3基于QSpinBox的自定义代理类 139
5.5.4自定义代理类的使用 141
第6章 对话框与多窗体设计 143
6.1标准对话框 143
6.1.1概述 143
6.1.2 QFileDialog对话框 144
6.1.3 QColorDialog对话框 146
6.1.4 QFontDialog对话框 146
6.1.5 QInputDialog标准输入对话框 147
6.1.6 QMessageBox消息对话框 149
6.2自定义对话框及其调用 150
6.2.1对话框的不同调用方式 150
6.2.2对话框QWDialogSize的创建和使用 152
6.2.3对话框Q WDialogHeaders的创建和使用 154
6.2.4对话框QWDialogLocate的创建与使用 156
6.2.5利用信号与槽实现交互操作 160
6.3多窗体应用程序设计 162
6.3.1主要的窗体类及其用途 162
6.3.2窗体类重要特性的设置 163
6.3.3多窗口应用程序的设计 165
6.4 MDI应用程序设计 170
6.4.1 MDI简介 170
6.4.2文档窗口类QFormDoc的设计 171
6.4.3 MDI主窗口设计与子窗口的使用 173
6.5 Splash与登录窗口 176
6.5.1实例功能概述 176
6.5.2对话框界面设计和类定义 177
6.5.3 QD1gLogin类功能实现 178
6.5.4 Splash登录窗口的使用 181
第7章 文件系统和文件读写 182
7.1文本文件读写 182
7.1.1实例功能概述 182
7.1.2 QFile读写文本文件 182
7.1.3 QFile和QTextStream结合读写文本文件 184
7.1.4解决中文乱码的问题 185
7.2二进制文件读写 186
7.2.1实例功能概述 186
7.2.2 Qt预定义编码文件的读写 187
7.2.3标准编码文件的读写 192
7.3文件目录操作 197
7.3.1文件目录操作相关的类 197
7.3.2实例概述 197
7.3.3 QCoreApplication类 199
7.3.4 QFile类 199
7.3.5 QFileInfo类 200
7.3.6 QDir类 201
7.3.7 QTemporaryDir和QTemporaryFile 203
7.3.8 QFileSystemWatcher类 203
第8章 绘图 206
8.1 QPainter基本绘图 206
8.1.1 QPainter绘图系统 206
8.1.2 QPen的主要功能 209
8.1.3 QBrush的主要功能 210
8.1.4渐变填充 212
8.1.5 QPainter绘制基本图形元件 214
8.2坐标系统和坐标变换 217
8.2.1坐标变换函数 217
8.2.2坐标变换绘图实例 218
8.2.3视口和窗口 221
8.2.4绘图叠加的效果 223
8.3 Graphics View绘图架构 224
8.3.1场景、视图与图形项 224
8.3.2 Graphics View的坐标系统 226
8.3.3 Graphics View相关的类 227
8.3.4 Graphics View程序基本结构和功能实现 229
8.3.5 Graphics View绘图程序实例 235
第9章 Qt Charts 247
9.1 Qt Charts概述 247
9.1.1 Qt Charts模块 247
9.1.2一个简单的QChart绘图程序 248
9.1.3图表的主要组成部分 249
9.2 QChart绘制折线图 253
9.2.1实例功能 253
9.2.2主窗口类定义和初始化 253
9.2.3画笔设置对话框QWDialogPen 256
9.2.4 QChart的设置 257
9.2.5 QLineSeries序列的设置 259
9.2.6 QValueAxis坐标轴的设置 261
9.3各种常见图表的绘制 263
9.3.1实例功能概述 263
9.3.2数据准备 264
9.3.3柱状图 267
9.3.4饼图 270
9.3.5堆叠柱状图 273
9.3.6百分比柱状图 274
9.3.7散点图和光滑曲线图 276
9.4图表的其他操作 277
9.4.1实例功能概述 277
9.4.2自定义QWChartView类 278
9.4.3主窗口类的设计 280
9.4.4实时显示光标处的数值 281
9.4.5 QLegendMarker的使用 282
9.4.6图表的缩放 283
第10章 Data Visualization 284
10.1 Data Visualization模块概述 284
10.2三维柱状图 285
10.2.1实例功能 285
10.2.2主窗口设计 286
10.2.3三维柱状图的创建 287
10.2.4三维柱状图属性设置 289
10.3三维散点图 293
10.3.1绘制三维散点图 293
10.3.2三维坐标轴的方向 296
10.3.3散点形状与大小 296
10.4三维曲面绘图 296
10.4.1三维曲面图 296
10.4.2三维地形图 301
第11章 数据库 305
11.1 Qt SQL模块概述 305
11.1.1 Qt SQL支持的数据库 305
11.1.2 SQLite数据库 306
11.1.3 Qt SQL模块的主要类 308
11.2 QSqlTableModel的使用 309
11.2.1实例功能 309
11.2.2主窗口设计 310
11.2.3打开数据表 311
11.2.4添加、插入与删除记录 319
11.2.5保存与取消修改 319
11.2.6设置和清除照片 320
11.2.7数据记录的遍历 321
11.2.8记录排序 322
11.2.9记录过滤 322
11.3 QSqlQueryModel的使用 323
11.3.1 QSqlQueryModel功能概述 323
11.3.2使用QSqlQueryModel实现数据查询 323
11.4 QSqlQuery的使用 327
11.4.1 QSqlQuery基本用法 327
11.4.2 QSqlQueryModel和QSqlQuery联合使用 328
11.5 QSqlRelationalTableModel的使用 336
11.5.1关系型数据表和实例功能 336
11.5.2关系型数据模型功能实现 338
第12章 自定义插件和库 340
12.1自定义Widget组件 340
12.1.1自定义Widget子类QmyBattery 340
12.1.2自定义Widget组件的使用 343
12.2自定义Qt Designer插件 344
12.2.1创建Qt Designer Widget插件项目 344
12.2.2插件项目各文件的功能实现 346
12.2.3插件的编译与安装 349
12.2.4使用自定义插件 350
12.2.5使用 MSVC编译器输出中文的问题 352
12.3创建和使用静态链接库 353
12.3.1创建静态链接库 353
12.3.2静态链接库的使用 354
12.4创建和使用共享库 357
12.4.1创建共享库 357
12.4.2使用共享库 358
第13章 多线程 362
13.1 QThread创建多线程程序 362
13.1.1 QThread类功能简介 362
13.1.2掷骰子的线程QDiceThread 363
13.1.3掷骰子的多线程应用程序 365
13.2线程同步 367
13.2.1线程同步的概念 367
13.2.2基于互斥量的线程同步 368
13.2.3基于QReadWriteLock的线程同步 371
13.2.4基于QWaitCondition的线程同步 373
13.2.5基于信号量的线程同步 377
第14章 网络编程 383
14.1主机信息查询 383
14.1.1 QHostInfo和QNetworkInterface类 383
14.1.2 QHostInfo的使用 384
14.1.3 QNetworkInterface的使用 386
14.2 TCP通信 388
14.2.1 TCP通信概述 388
14.2.2 TCP服务器端程序设计 390
14.2.3 TCP客户端程序设计 395
14.3 QUdpSocket实现UDP通信 397
14.3.1 UDP通信概述 397
14.3.2 UDP单播和广播 398
14.3.3 UDP组播 402
14.4基于HTTP协议的网络应用程序 405
14.4.1实现高层网络操作的类 405
14.4.2基于HTTP协议的网络文件下载 406
第15章 多媒体 409
15.1 Qt多媒体模块功能概述 409
15.2音频播放 410
15.2.1使用QMediaPlayer播放音乐文件 410
15.2.2使用QSoundEffect和Qsound播放音效文件 415
15.3音频输入 415
15.3.1使用QAudioRecorder录制音频 415
15.3.2使用QAudioInput获取音频输入 421
15.4视频播放 428
15.4.1在QVideoWidget上播放视频 428
15.4.2在QGraphicsVideoItem上播放视频 431
15.5摄像头的使用 433
15.5.1摄像头控制概述 433
15.5.2实例主窗口设计与初始化 435
15.5.3 QCamera对象创建与控制 436
15.5.4 QCameraImageCapture抓取静态图片 438
15.5.5 QMediaRecorder视频录制 439
第16章 应用程序设计辅助功能 441
16.1多语言界面 441
16.1.1多语言界面设计概述 441
16.1.2 tr()函数的使用 441
16.1.3生成语言翻译文件 442
16.1.4使用Qt Linguist翻译ts文件 443
16.1.5调用翻译文件改变界面语言 444
16.2使用样式表自定义界面 446
16.2.1 Qt样式表 446
16.2.2 Qt样式表句法 447
16.2.3样式表的使用 453
16.3使用QStyle设置界面外观 455
16.3.1 QStyle的作用 455
16.3.2 Qt内置样式的使用 456
16.4 Qt应用程序的发布 457
16.4.1应用程序发布方式 457
16.4.2 Windows平台上的应用程序发布 458