QML葵花宝典(QmlBook In Chinese)— Qt5/QML 完全学习手册
中文版 QmlBook(原作 jsappanasik 的 QmlBook 开源书),Gitbook 制作为 PDF 471 页。Qt/QML 中文资料的稀缺译本,覆盖 Qt5 全栈:QML 语言 → 动画/状态 → 模型视图 → Canvas/着色器 → 多媒体/网络/存储 → JavaScript → C++ 集成。用户云盘
/日常学习资料/qt/下的主力 Qt 参考书。
全书结构(17 章)
- 初识 Qt5:Qt5 介绍、Qt 构建模块(Building Blocks)、Qt Project
- 开始学习:安装 Qt5 SDK、Hello World、应用程序类型(控制台/窗口/QML 三类)
- Qt Creator IDE:界面、Qt Kit 注册、编辑器、Locator、调试、快捷键
- QML 快速入门:QML 语法、基本元素、组件、简单变换
- 定位元素:Positioning、Layout、输入元素
- 动态元素:动画、状态与过渡
- 模型-视图-代理(MVD):概念、基础模型、动态视图、Delegate
- Canvas 作画:便捷 API、渐变、阴影、图片、变换、组合模式、像素缓冲、HTML5 Canvas 移植
- 粒子系统:模拟概念、粒子参数、定向粒子、粒子绘制器、粒子组
- 着色器效果:OpenGL Shader、片段/顶点着色器、波浪/剧幕效果、Qt GraphicsEffect 库
- 多媒体:播放、音效、视频流、图像捕捉
- 网络:HTTP 服务 UI、模板、HTTP 请求、本地文件、REST API、OAuth、Qt QML 引擎内置 IO、Web Sockets
- 存储:Settings、LocalStorage-SQL、其他存储 API
- 动态 QML:动态加载组件、间接连接/绑定、创建销毁对象、跟踪动态对象
- JavaScript:QML 中的 JS 语法、JS 对象、JS 控制台
- Qt 与 C++:Boilerplate 程序、QObject、QMake/CMake 构建、QString、顺序/组合容器、文件 IO、C++ 数据模型、C++ 扩展 QML(插件机制 + FileIO 实例)
- 其他:浏览器/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)可作后续消化对象
关联
- MDA-20全自动化学发光免疫分析仪使用说明书-20190911 —— 仪器软件系统即嵌入式 Linux Qt GUI
- 软件形式化方法-课程讲义全套-王捍贫 —— State/Transition 背后的状态迁移系统理论
- 流式细胞仪CLFCS软件系统开发计划与进度 —— 同期 Qt 桌面项目实践