|
| 1 | +# 01-创建 QML 项目:从 Qt Creator 到跑起来 |
| 2 | + |
| 3 | +目录页:见 [QML 教程目录](00-目录.md) |
| 4 | + |
| 5 | +## 目标 |
| 6 | + |
| 7 | +- 在 Qt Creator 里创建一个“能跑起来”的 QML 项目 |
| 8 | +- 看懂 QML 项目的最小骨架:CMakeLists / main.cpp / main.qml |
| 9 | +- 按本教程约束:不使用 `QtQuick.Controls` 也能做出最小界面 |
| 10 | + |
| 11 | +## 先决知识(建议) |
| 12 | + |
| 13 | +- 已安装 Qt 与 Qt Creator(见 Qt 01 章) |
| 14 | +- 能在 Qt Creator 里创建并运行工程(见 Qt 02 章) |
| 15 | + |
| 16 | +--- |
| 17 | + |
| 18 | +## 1. 在 Qt Creator 里创建项目(推荐:Qt 6 + CMake) |
| 19 | + |
| 20 | +1. File → New File or Project… |
| 21 | +2. 选择 Application → Qt → Qt Quick Application(或类似名字) |
| 22 | +3. 选择构建系统:优先选 CMake |
| 23 | +4. 选择 Kit:优先选一个能跑起来的(通常是 Desktop Qt 6.x.x MinGW/MSVC) |
| 24 | +5. Finish |
| 25 | + |
| 26 | +你创建完后,第一次点击 Run(运行)时,Qt Creator 会自动: |
| 27 | +- 配置(configure) |
| 28 | +- 编译(build) |
| 29 | +- 运行(run) |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## 2. 认识最小工程骨架:你只需要抓住 3 个文件 |
| 34 | + |
| 35 | +不同模板会略有差异,但你一定能找到这三块: |
| 36 | + |
| 37 | +- `CMakeLists.txt`:告诉构建系统怎么编译、怎么把 QML 打包进程序 |
| 38 | +- `main.cpp`:程序入口,创建应用与 QML 引擎并加载 QML |
| 39 | +- `main.qml`:你的界面从这里开始 |
| 40 | + |
| 41 | +--- |
| 42 | + |
| 43 | +## 3. 把模板改成“不用 QtQuick.Controls 也能跑” |
| 44 | + |
| 45 | +Qt Creator 的默认 Qt Quick 模板经常会带 `QtQuick.Controls`。但你的教程明确禁止使用它,所以你可以直接把 `main.qml` 改成下面这个最小版本: |
| 46 | + |
| 47 | +```qml |
| 48 | +import QtQuick 2.15 |
| 49 | +import QtQuick.Window 2.15 |
| 50 | +
|
| 51 | +Window { |
| 52 | + width: 360 |
| 53 | + height: 240 |
| 54 | + visible: true |
| 55 | + title: "QtCraft QML" |
| 56 | +
|
| 57 | + Rectangle { |
| 58 | + anchors.fill: parent |
| 59 | + color: "#121212" |
| 60 | +
|
| 61 | + Rectangle { |
| 62 | + anchors.centerIn: parent |
| 63 | + width: 240 |
| 64 | + height: 80 |
| 65 | + radius: 14 |
| 66 | + color: "#6750A4" |
| 67 | +
|
| 68 | + Text { |
| 69 | + anchors.centerIn: parent |
| 70 | + text: "Hello QML" |
| 71 | + color: "#ffffff" |
| 72 | + font.pixelSize: 20 |
| 73 | + } |
| 74 | +
|
| 75 | + MouseArea { |
| 76 | + anchors.fill: parent |
| 77 | + onClicked: parent.color = parent.color === "#6750A4" ? "#1E88E5" : "#6750A4" |
| 78 | + } |
| 79 | + } |
| 80 | + } |
| 81 | +} |
| 82 | +``` |
| 83 | + |
| 84 | +到这里你就已经能做到: |
| 85 | +- 一个窗口 |
| 86 | +- 一块区域 |
| 87 | +- 点击后改变颜色(交互) |
| 88 | + |
| 89 | +这已经足够支撑你继续学 QML 的“树结构 + 属性绑定”的直觉。 |
| 90 | + |
| 91 | +--- |
| 92 | + |
| 93 | +## 4. 如果你运行失败,优先排这三类问题 |
| 94 | + |
| 95 | +### 4.1 Kit 不可用 / 编译器找不到 |
| 96 | + |
| 97 | +表现: |
| 98 | +- “No valid kits found” |
| 99 | +- 或者 CMake/编译器路径报错 |
| 100 | + |
| 101 | +处理: |
| 102 | +- 回到 Qt Creator 的 Kits 设置,确保 Qt 版本与编译器都装齐(见 Qt 02 章) |
| 103 | + |
| 104 | +### 4.2 QML 版本/模块导入失败 |
| 105 | + |
| 106 | +表现: |
| 107 | +- QML 报 “module 'QtQuick.Window' is not installed” |
| 108 | + |
| 109 | +处理: |
| 110 | +- 你的 Qt 安装里可能没装 Qt Quick/QML 相关组件,回安装器补装 |
| 111 | +- 确认你用的是 Qt 6 的 Desktop Kit |
| 112 | + |
| 113 | +### 4.3 QML 没加载到 / 运行后“什么都没有” |
| 114 | + |
| 115 | +表现: |
| 116 | +- 程序启动了但空白窗口或直接退出 |
| 117 | + |
| 118 | +处理: |
| 119 | +- 确认 `main.qml` 确实在工程里,并且引擎加载路径正确 |
| 120 | +- 最快自检:先用一个明确的背景色(比如上面例子里的 `"#121212"`)确认 QML 生效 |
| 121 | + |
| 122 | +--- |
| 123 | + |
| 124 | +## 小练习 |
| 125 | + |
| 126 | +### 练习 1:改标题与尺寸 |
| 127 | + |
| 128 | +- 题目:把窗口标题改成你项目名,把宽高改成 800x600 |
| 129 | +- 约束:禁止 QtQuick.Controls |
| 130 | +- 目标:熟悉“改 QML 立即看到效果” |
| 131 | + |
| 132 | +### 练习 2:加一个计数器 |
| 133 | + |
| 134 | +- 题目:点击一次 count + 1,并把 count 显示出来 |
| 135 | +- 约束:禁止 QtQuick.Controls |
| 136 | +- 提示:用 `property int count: 0` |
| 137 | +- 目标:练“状态驱动 UI” |
| 138 | + |
| 139 | +--- |
| 140 | + |
| 141 | +## 小结 |
| 142 | + |
| 143 | +- QML 项目最关键三块:CMakeLists / main.cpp / main.qml |
| 144 | +- Qt Creator 模板可能自带 Controls,但你可以用 Window + Rectangle + Text + MouseArea 完成最小 UI |
| 145 | +- 能跑起来以后再学“绑定、状态、动画、组件化”会轻松很多 |
| 146 | + |
| 147 | +下一篇:见 [02-QML入门-快速搭界面(不使用QtQuick.Controls)](02-QML入门-快速搭界面(不使用QtQuick.Controls).md) |
| 148 | + |
0 commit comments