QML葵花宝典(QmlBook In Chinese)— Qt5/QML 完全学习手册

中文版 QmlBook(原作 jsappanasik 的 QmlBook 开源书),Gitbook 制作为 PDF 471 页。Qt/QML 中文资料的稀缺译本,覆盖 Qt5 全栈:QML 语言 → 动画/状态 → 模型视图 → Canvas/着色器 → 多媒体/网络/存储 → JavaScript → C++ 集成。用户云盘 /日常学习资料/qt/ 下的主力 Qt 参考书。

全书结构(17 章)

  1. 初识 Qt5:Qt5 介绍、Qt 构建模块(Building Blocks)、Qt Project
  2. 开始学习:安装 Qt5 SDK、Hello World、应用程序类型(控制台/窗口/QML 三类)
  3. Qt Creator IDE:界面、Qt Kit 注册、编辑器、Locator、调试、快捷键
  4. QML 快速入门:QML 语法、基本元素、组件、简单变换
  5. 定位元素:Positioning、Layout、输入元素
  6. 动态元素:动画、状态与过渡
  7. 模型-视图-代理(MVD):概念、基础模型、动态视图、Delegate
  8. Canvas 作画:便捷 API、渐变、阴影、图片、变换、组合模式、像素缓冲、HTML5 Canvas 移植
  9. 粒子系统:模拟概念、粒子参数、定向粒子、粒子绘制器、粒子组
  10. 着色器效果:OpenGL Shader、片段/顶点着色器、波浪/剧幕效果、Qt GraphicsEffect 库
  11. 多媒体:播放、音效、视频流、图像捕捉
  12. 网络:HTTP 服务 UI、模板、HTTP 请求、本地文件、REST API、OAuth、Qt QML 引擎内置 IO、Web Sockets
  13. 存储:Settings、LocalStorage-SQL、其他存储 API
  14. 动态 QML:动态加载组件、间接连接/绑定、创建销毁对象、跟踪动态对象
  15. JavaScript:QML 中的 JS 语法、JS 对象、JS 控制台
  16. Qt 与 C++:Boilerplate 程序、QObject、QMake/CMake 构建、QString、顺序/组合容器、文件 IO、C++ 数据模型、C++ 扩展 QML(插件机制 + FileIO 实例)
  17. 其他:浏览器/HTML vs QtQuick/QML 对比、动态数据、进阶技巧、QML 运行环境、术语英汉对照表

核心知识点摘录

动画体系(第 5.1 节,足球示例贯穿)

  • 组合模式:ParallelAnimation 包 SequentialAnimation + 独立动画,实现”XY 同时、Y 分两段”
  • NumberAnimation/RotationAnimation 用 target + properties: "y" + to 声明式驱动
  • 缓冲曲线语义:上升段 Easing.OutCirc(近似圆周)、落地段 Easing.OutBounce(末尾反弹;InBounce 会立刻反弹——易错点);水平位移和旋转用线性
  • 动画总时长定义为根元素 property int duration 便于同步各段

状态与过渡(第 5.2 节)

  • State 挂在 Item 的 states 列表,靠 name 鉴别;默认状态名是空串 ""(初始化属性即默认状态)
  • 切换:赋值 root.state = "go",或 State.when 绑定布尔表达式自动切换
  • PropertyChanges 描述状态下属性差异;Transition 定义状态间属性动画,StateChange 指定 from/to
  • 交通灯示例:stop/go 两态互斥改色,演示状态图 → QML 映射(与此前消化的《软件形式化方法》讲义中 Kripke/状态迁移概念正好呼应)

应用程序三种形态(第 2 章)

  • 控制台:QCoreApplication + 事件循环,Qt 提供 QFile/QNetwork 等非 GUI 组件
  • 窗口:QApplication::exec() 事件循环;无父对象的 QWidget 即顶层窗口;QScopedPointer 管生命周期
  • 自定义部件:继承 QWidget 重写 paintEvent/mousePressEvent/mouseMoveEvent,事件改内部状态后 update() 触发重绘
  • 桌面部件:父子关系容器 + 布局,按钮/复选框等跨平台本地外观

C++ 集成(第 15-16 章,对做仪器的 Qt 上位机最实用)

  • 构建系统双轨:QMake(.pro)与 CMake
  • 常用类:QString、QList/QStringList(join/split 互转)、QMap 组合容器
  • 文件 IO:QFile + QTextStream 逐行读 CSV 的完整惯用法(open→forever readLine→split(”,”)→trimmed→append)
  • C++ 数据模型接入 QML View;C++ 扩展 QML 走插件机制(qmldir + QPluginLoader),示例 FileIO type 注册给 QML 使用

可行动点 / 使用建议

  • 做 Qt 嵌入式上位机(化学发光仪/流式仪 Linux 平台)时,第 15-16 章是 C++ 侧速查
  • QML 动画调试口诀:反弹类曲线 Out 开头放尾部、In 开头会在开头
  • 云盘同目录还有 c++Primer Plus第6版英文版.pdf(8MB)可作后续消化对象

关联