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 打开
- 选择“文件 → 打开文件或项目”,打开上述任意一个
.pro。 - 选择桌面 Kit。本机已经配置的
Desktop Qt 6.8.3 MinGW 64-bit可以使用。 - 构建并运行。构建目录建议使用英文路径,并与源码目录分开。
- 双击
mainwindow.ui可进入 Designer,修改布局和组件属性。 - 换用 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 目标。
怎样阅读
每个项目都按下面的顺序阅读:
mainwindow.ui:先认清组件名称与布局。main.cpp:创建应用、应用外观、显示主窗口、进入事件循环。mainwindow.cpp:找出信号连接,再追踪一次按钮操作。conversion.cpp/countdown.cpp/roster.cpp:阅读不依赖具体控件的计算规则。tests:查看正常输入和边界情况应得到什么结果。
appearance.h 只负责字体与样式,可以在学生掌握功能后再讲。业务逻辑没有依赖这些样式。当前交付的是可运行的完整参考工程,学生练习见各项目 README。
CMake 构建
以 Qt 5.14.2 的 MinGW Kit 为例,先将匹配的编译器、Qt 的 bin 和 Ninja 加入当前终端 PATH,再运行:
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 模块。普通构建默认不编译测试:
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 上如需保存包含中文的后台截图,可设置:
$env:QT_QPA_FONTDIR = "C:/Windows/Fonts"
$env:QT_TEACHING_SCREENSHOTS = "D:/QtTeachingScreenshots"
测试覆盖换算公式、非法输入、暂停与继续、延迟刷新、不重复抽签、分组完整性,以及主要按钮操作。具体版本、编译器和结果见 verification/验证说明.md。