75 lines
3.8 KiB
Markdown
75 lines
3.8 KiB
Markdown
# Qt Widgets 前期教学项目
|
|
|
|
三个独立的 C++ 桌面项目,对应单位换算、课堂计时、随机抽签与分组。全部使用 Qt Widgets,界面文件为 Qt Designer 的 `.ui`,没有 QML、Qt Quick 或网页界面。
|
|
|
|
## 项目入口
|
|
|
|
| 项目 | Qt Creator 入口 | 教学说明 |
|
|
|---|---|---|
|
|
| 单位换算器 | `01_UnitConverter/UnitConverter.pro` | `01_UnitConverter/README.md` |
|
|
| 课堂计时器 | `02_ClassroomTimer/ClassroomTimer.pro` | `02_ClassroomTimer/README.md` |
|
|
| 随机抽签与分组 | `03_RaffleGroups/RaffleGroups.pro` | `03_RaffleGroups/README.md` |
|
|
|
|
每个项目也有独立的 `CMakeLists.txt`。根目录的 `QtTeachingProjects.pro` 和 `CMakeLists.txt` 可以一次打开三个项目。目录使用英文,便于旧版 Windows 构建工具处理路径;界面、注释和教学说明使用中文。
|
|
|
|
## 先运行,再阅读源码
|
|
|
|
`Run_Qt5.14.2` 中的三个 EXE 是 Windows 64 位演示程序,附带运行库,可直接双击。转交其他电脑时请复制整个目录。
|
|
|
|
- `UnitConverter.exe`:单位换算器。
|
|
- `ClassroomTimer.exe`:课堂计时器。
|
|
- `RaffleGroups.exe`:随机抽签与分组。
|
|
|
|
## 用 Qt Creator 打开
|
|
|
|
1. 选择“文件 → 打开文件或项目”,打开上述任意一个 `.pro`。
|
|
2. 选择桌面 Kit。本机已经配置的 `Desktop Qt 6.8.3 MinGW 64-bit` 可以使用。
|
|
3. 构建并运行。构建目录建议使用英文路径,并与源码目录分开。
|
|
4. 双击 `mainwindow.ui` 可进入 Designer,修改布局和组件属性。
|
|
5. 换用 Qt 5.14.2 时,选择对应的 Qt 5.14.2 桌面 Kit,并使用新的构建目录。Qt 库与编译器必须属于匹配的 Kit,不能混用 MinGW 与 MSVC。
|
|
|
|
源码以 Qt 5.14.2 为最低版本。Qt 5 构建使用 C++14;Qt 6 构建自动使用 C++17。没有使用 Qt 6 专有的控件接口,也没有要求 Qt 5.15 的无版本 CMake 目标。
|
|
|
|
## 怎样阅读
|
|
|
|
每个项目都按下面的顺序阅读:
|
|
|
|
1. `mainwindow.ui`:先认清组件名称与布局。
|
|
2. `main.cpp`:创建应用、应用外观、显示主窗口、进入事件循环。
|
|
3. `mainwindow.cpp`:找出信号连接,再追踪一次按钮操作。
|
|
4. `conversion.cpp` / `countdown.cpp` / `roster.cpp`:阅读不依赖具体控件的计算规则。
|
|
5. `tests`:查看正常输入和边界情况应得到什么结果。
|
|
|
|
`appearance.h` 只负责字体与样式,可以在学生掌握功能后再讲。业务逻辑没有依赖这些样式。当前交付的是可运行的完整参考工程,学生练习见各项目 README。
|
|
|
|
## CMake 构建
|
|
|
|
以 Qt 5.14.2 的 MinGW Kit 为例,先将匹配的编译器、Qt 的 bin 和 Ninja 加入当前终端 PATH,再运行:
|
|
|
|
```powershell
|
|
cmake -S . -B build-qt5 -G Ninja -DCMAKE_PREFIX_PATH="D:/Qt/5.14.2/mingw73_64" -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build build-qt5
|
|
```
|
|
|
|
示例中的 Qt 路径需要替换成实际安装位置。本机 Qt 6 的前缀为 `D:/Qt/6.8.3/mingw_64`,编译器位于 `D:/Qt/Tools/mingw1310_64/bin`。旧版本 Qt Creator 可直接使用 qmake 工程,不必额外配置 CMake。
|
|
|
|
## 自动化验证
|
|
|
|
测试需要同一套 Qt 中的 Qt Test 模块。普通构建默认不编译测试:
|
|
|
|
```powershell
|
|
cmake -S . -B build-test -G Ninja -DCMAKE_PREFIX_PATH="你的Qt目录" -DBUILD_TEACHING_TESTS=ON -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build build-test
|
|
ctest --test-dir build-test --output-on-failure
|
|
```
|
|
|
|
也可打开各项目 `tests` 中的 `.pro` 独立运行测试。测试在后台使用 offscreen 平台,不打开浏览器。Windows 上如需保存包含中文的后台截图,可设置:
|
|
|
|
```powershell
|
|
$env:QT_QPA_FONTDIR = "C:/Windows/Fonts"
|
|
$env:QT_TEACHING_SCREENSHOTS = "D:/QtTeachingScreenshots"
|
|
```
|
|
|
|
测试覆盖换算公式、非法输入、暂停与继续、延迟刷新、不重复抽签、分组完整性,以及主要按钮操作。具体版本、编译器和结果见 `verification/验证说明.md`。
|
|
|