第1章 走进Qt Quick的世界 1
1.1 全新的QML和Qt Quick 1
1.1.1 历史变迁 1
1.1.2 QML 2
1.1.3 Qt Quick 2
1.1.4 Qt QML和Qt Quick框架 3
1.2 Qt Quick项目 4
1.2.1 Qt 5的下载与安装 4
1.2.2 创建Qt Quick应用 6
1.2.3 创建Qt Quick UI项目 11
1.2.4 运行示例程序 13
1.2.5 Qt Quick程序的发布 14
1.3 小结 16
第2章 QML语法 17
2.1 QML语法基础 17
2.2 import导入语句 20
2.2.1 模块(命名空间)导入语句 20
2.2.2 目录导入语句 21
2.2.3 JavaScript资源导入语句 23
2.3 QML类型系统 24
2.3.1 基本类型 24
2.3.2 JavaScript类型 26
2.3.3 对象类型 26
2.4 对象特性 26
2.4.1 id特性 27
2.4.2 属性特性 28
2.4.3 信号和信号处理器特性 36
2.4.4 方法特性 40
2.4.5 附加属性和附加信号处理器 41
2.4.6 枚举 43
2.5 集成JavaScript 43
2.5.1 JavaScript表达式 43
2.5.2 从JavaScript动态创建QML对象 49
2.5.3 在QML中定义JavaScript资源 53
2.5.4 在QML中导入JavaScript资源 56
2.5.5 JavaScript宿主环境 58
2.6 QML文档 59
2.6.1 通过QML文档定义对象类型 60
2.6.2 QML组件 62
2.6.3 作用域和命名解析 64
2.6.4 资源加载和网络透明性 70
2.6.5 QML的国际化 71
2.6.6 QML的编码约定 75
2.7 QML模块 78
2.7.1 定义一个QML模块 78
2.7.2 支持的QML模块类型 79
2.8 小结 79
第3章 Qt Quick基础 80
3.1 基础可视项目 81
3.1.1 Item 81
3.1.2 Rectangle 85
3.1.3 Text 85
3.1.4 TextInput 92
3.1.5 TextEdit 97
3.2 布局管理 99
3.2.1 定位器 99
3.2.2 基于锚的布局 103
3.2.3 Layouts 106
3.3 事件处理 110
3.3.1 MouseArea 110
3.3.2 鼠标事件和滚轮事件 112
3.3.3 拖放事件 114
3.3.4 键盘事件和焦点作用域 117
3.3.5 定时器 123
3.4 使用Loader动态加载组件 124
3.4.1 Loader的大小与行为 124
3.4.2 从加载的项目中接收信号 125
3.4.3 焦点和键盘事件 126
3.5 小结 127
第4章 Qt Quick控件 128
4.1 Qt Quick控件基础 129
4.2 按钮类控件 139
4.2.1 AbstractButton 139
4.2.2 Button 141
4.2.3 CheckBox 142
4.2.4 RadioButton 144
4.2.5 ButtonGroup 145
4.2.6 RoundButton 146
4.2.7 Switch 147
4.2.8 DelayButton 148
4.2.9 Action和ActionGroup 149
4.3 指示类控件 151
4.3.1 Label 151
4.3.2 ProgressBar 151
4.3.3 BusyIndicator 152
4.3.4 PageIndicator 153
4.4 输入类控件 154
4.4.1 TextField 154
4.4.2 TextArea 155
4.4.3 ComboBox 156
4.4.4 SpinBox 159
4.4.5 Dial 162
4.4.6 Slider 163
4.4.7 RangeSlider 165
4.4.8 Tumbler 166
4.5 菜单类控件 167
4.5.1 Menu 167
4.5.2 MenuBar 171
4.6 容器类控件 173
4.6.1 Pane 173
4.6.2 Frame 174
4.6.3 GroupBox 174
4.6.4 Page 175
4.6.5 ScrollView 176
4.6.6 ScrollBar和ScrollIndicator 178
4.6.7 StackView 180
4.6.8 TabBar 185
4.6.9 ToolBar 187
4.6.10 SwipeView 188
4.7 弹出类控件 190
4.7.1 Overlay 190
4.7.2 Popup 191
4.7.3 Dialog 194
4.7.4 ToolTip 195
4.7.5 Drawer 196
4.8 标准对话框 197
4.8.1 ColorDialog 197
4.8.2 FileDialog 198
4.8.3 FontDialog 199
4.8.4 MessageDialog 200
4.9 Qt Quick Controls 2配置文件 202
4.10 共享业务逻辑代码 202
4.10.1 图片查看器 203
4.10.2 文件选择器 207
4.10.3 重构图片选择器 207
4.11 小结 212
第5章 图形动画基础 213
5.1 颜色、渐变和调色板 213
5.1.1 颜色 213
5.1.2 渐变 216
5.1.3 系统调色板 216
5.2 图片、边界图片和动态图片 217
5.2.1 图片 217
5.2.2 边界图片 219
5.2.3 动态图片 221
5.3 缩放、旋转和平移变换 221
5.3.1 使用属性实现简单变换 221
5.3.2 使用Transform实现高级变换 223
5.4 状态 224
5.4.1 创建状态 225
5.4.2 默认状态和when属性 226
5.5 动画和过渡 227
5.5.1 使用属性动画 227
5.5.2 使用预定义的目标和属性 229
5.5.3 在状态改变时使用过渡 230
5.5.4 使用默认的行为动画 231
5.5.5 使用并行或顺序动画组 232
5.5.6 使用动画师动画 233
5.5.7 控制动画的执行 234
5.5.8 共享动画实例 235
5.6 精灵动画 236
5.6.1 精灵引擎介绍 236
5.6.2 AnimatedSprite 240
5.7 Flickable和Flipable 241
5.7.1 弹动效果 241
5.7.2 翻转效果 243
5.8 小结 244
第6章 图形效果 245
6.1 混合效果 245
6.2 颜色效果 248
6.3 渐变效果 251
6.3.1 锥形渐变 251
6.3.2 线性渐变 252
6.3.3 辐射渐变 253
6.4 变形效果 254
6.5 阴影效果 255
6.5.1 投影 255
6.5.2 内阴影 256
6.6 模糊效果 257
6.6.1 快速模糊 257
6.6.2 高斯模糊 258
6.6.3 递归模糊 259
6.6.4 遮罩模糊 260
6.7 动感模糊效果 261
6.7.1 方向模糊 261
6.7.2 径向模糊 262
6.7.3 缩放模糊 263
6.8 发光效果 263
6.8.1 发光 263
6.8.2 矩形发光 264
6.9 遮罩效果 266
6.9.1 不透明遮罩 266
6.9.2 阈值遮罩 267
6.10 小结 268
第7章 粒子系统 269
7.1 ParticleSystem 269
7.2 发射器 271
7.3 渲染器 272
7.4 TrailEmitter 275
7.5 粒子组 276
7.6 随机参数 278
7.7 影响器 279
7.7.1 Age 279
7.7.2 Attractor 280
7.7.3 Friction 281
7.7.4 Gravity 281
7.7.5 Turbulence 282
7.7.6 Wander 282
7.7.7 GroupGoal 282
7.7.8 SpriteGoal 283
7.8 小结 284
第8章 Canvas 2D 285
8.1 Canvas的使用 285
8.2 绘制操作 287
8.2.1 绘制参数设置 288
8.2.2 绘制矩形 290
8.2.3 状态的保存与恢复 291
8.2.4 绘制文本 293
8.2.5 绘制路径 294
8.3 渐变填充 299
8.3.1 线性渐变 299
8.3.2 辐射渐变 300
8.3.3 锥型渐变 301
8.4 阴影 301
8.5 使用图像 302
8.6 坐标变换 304
8.6.1 平移 305
8.6.2 缩放 305
8.6.3 旋转 306
8.6.4 斜切 307
8.6.5 transform()函数总结 308
8.7 小结 309
第9章 模型和视图 310
9.1 模型/视图架构简介 310
9.2 数据模型 312
9.2.1 整数作为模型 312
9.2.2 ListModel 313
9.2.3 WorkerScript 315
9.2.4 ObjectModel 316
9.2.5 DelegateModel 317
9.2.6 Package 319
9.2.7 XmlListModel 320
9.2.8 LocalStorage 322
9.2.9 使用C++扩展QML模型 326
9.3 视图类型 330
9.3.1 ListView 330
9.3.2 GridView 336
9.3.3 视图过渡 338
9.3.4 PathView 341
9.4 调整性能 344
9.5 小结 345
第10章 Qt图表 346
10.1 创建一个图表项目 347
10.2 坐标轴Axes 348
10.2.1 数值坐标轴和对数数值坐标轴 349
10.2.2 分类坐标轴 350
10.2.3 柱形图分类坐标轴 351
10.2.4 日期时间坐标轴 352
10.2.5 坐标轴的共有属性 354
10.3 图例Legend 354
10.4 ChartView 356
10.4.1 设置主题 357
10.4.2 启用动画 358
10.5 使用外部数据动态创建图表 359
10.6 常用图表类型 362
10.6.1 折线图、曲线图和散点图 362
10.6.2 面积图 364
10.6.3 柱形图、堆积柱形图、百分比堆积柱形图 365
10.6.4 饼状图 366
10.6.5 盒须图(箱形图) 367
10.6.6 蜡烛图(K线图) 368
10.6.7 极坐标图 369
10.7 小结 371
第11章 Qt Data Visualization数据可视化 372
11.1 3D柱形图 372
11.1.1 3D坐标轴 375
11.1.2 数据代理 377
11.1.3 3D系列 380
11.2 自定义3D场景 381
11.3 设置主题 382
11.4 选择模式和切片视图 385
11.5 3D散点图 387
11.6 3D曲面图 389
11.7 小结 391
第12章 多媒体应用 392
12.1 多媒体模块介绍 392
12.2 播放音频 393
12.2.1 播放压缩音频 393
12.2.2 播放未压缩音频 395
12.3 播放视频 396
12.3.1 使用Video播放视频文件 396
12.3.2 对视频使用图形效果 397
12.4 媒体播放器 399
12.4.1 播放音视频 399
12.4.2 使用Windows平台附加功能 400
12.5 小结 406
第13章 QML与C++的集成 407
13.1 快速选择正确的集成方式 408
13.2 QML运行时的C++类 411
13.2.1 QQmlEngine 411
13.2.2 QQmlContext 412
13.2.3 QQmlComponent 414
13.2.4 QQmlExpression 415
13.3 在QML中使用C++特性 416
13.3.1 数据类型处理和拥有权 416
13.3.2 数据类型的转换 416
13.3.3 使用C++属性 419
13.3.4 使用函数和槽 423
13.3.5 使用信号 425
13.4 注册QML类型 426
13.4.1 注册可实例化对象类型 426
13.4.2 注册不可实例化对象类型 427
13.4.3 注册单例类型 427
13.4.4 类型的修订和版本 428
13.5 定义QML特定类型和属性 429
13.5.1 提供附加对象注解数据 429
13.5.2 属性修饰符类型 432
13.5.3 指定QML对象类型的默认属性 434
13.5.4 接收对象初始化通知 435
13.6 在C++中使用QML对象 436
13.6.1 使用C++加载QML对象 436
13.6.2 使用对象名字访问加载的QML对象 438
13.6.3 使用C++访问QML对象成员 439
13.7 小结 442
第14章 使用Qt Quick设计器 443
14.1 Qt Quick UI表单文件 444
14.2 常用操作 448
14.2.1 管理项目层次 448
14.2.2 QML类型库 449
14.2.3 指定项目属性 449
14.2.4 添加状态 452
14.2.5 在画布上操作QML类型 452
14.3 使用设计器编辑QML文档 457
14.3.1 创建项目 457
14.3.2 创建主视图 458
14.3.3 添加视图 461
14.3.4 为视图添加动画 462
14.4 小结 464
第15章 Qt移动开发入门 465
15.1 Qt Android开发配置 465
15.1.1 工具软件的下载 465
15.1.2 工具软件的安装 466
15.1.3 使用虚拟机运行Qt Android程序 468
15.1.4 使用手机运行Qt Android程序 471
15.1.5 发布项目 472
15.2 Qt iOS开发配置 476
15.2.1 使用模拟器运行Qt iOS程序 477
15.2.2 使用手机运行Qt iOS程序 478
15.3 创建演示程序 481
15.3.1 创建应用主窗口 481
15.3.2 拍照功能 486
15.3.3 多点触控 488
15.3.4 传感器 489
15.3.5 地图 491
15.3.6 蓝牙 493
15.4 小结 496
参考文献 497