{"id":28411056,"url":"https://github.com/parallel101/qtguide","last_synced_at":"2025-08-19T23:08:01.184Z","repository":{"id":263249354,"uuid":"889744398","full_name":"parallel101/qtguide","owner":"parallel101","description":"小彭老师现代 Qt 项目实战","archived":false,"fork":false,"pushed_at":"2025-04-04T10:00:51.000Z","size":48,"stargazers_count":89,"open_issues_count":4,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-25T08:42:33.922Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parallel101.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-17T05:33:03.000Z","updated_at":"2025-06-23T02:37:22.000Z","dependencies_parsed_at":"2024-11-17T10:18:20.518Z","dependency_job_id":"d1b246be-c91d-4ce2-be95-e809a9b8b2a7","html_url":"https://github.com/parallel101/qtguide","commit_stats":null,"previous_names":["parallel101/qtguide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/parallel101/qtguide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fqtguide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fqtguide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fqtguide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fqtguide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parallel101","download_url":"https://codeload.github.com/parallel101/qtguide/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fqtguide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271236280,"owners_count":24723978,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-02T13:39:21.082Z","updated_at":"2025-08-19T23:08:01.163Z","avatar_url":"https://github.com/parallel101.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 小彭老师现代 Qt 项目实战\n\n小彭老师带你学习现代 Qt，结合实际项目边学边做，妈妈再也不用担心我的“铁饭碗”。\n\n## 安装开发环境\n\n小彭老师自己用的是：\n\n- Qt 5.15.15\n- GCC 14.2.1\n- Arch Linux\n\n但是其他平台和编译器应该也能兼容。\n\n\u003e 如有不兼容问题，请通过 [GitHub issues](https://github.com/parallel101/qtguide/issues) 反馈。\n\n### Arch Linux\n\n推荐使用 Linux 系统，一行命令搞定依赖。\n\n```bash\npacman -S qt5-base\n```\n\n\u003e 警告：不推荐使用 WSL 或 WSL2，因为它们只有命令行界面，不支持图形界面和显卡，导致之后的 Qt + OpenGL 实战困难。如果你能配出图形界面 + 显卡支持，那你牛币，大多数人是配不明白的。\n\n### Windows\n\n欢迎来到地狱副本。\n\n[点击此处下载 Qt 5.12.12 离线安装包](https://download.qt.io/archive/qt/5.12/5.12.12/qt-opensource-windows-x86-5.12.12.exe)\n\n\u003e **警告**：由于 Qt 公司的**傻逼公关**，如果你是从官网下载的最新版安装包，它会强制给你下载一个所谓的“联网安装包”！在线安装包会强制要求你注册一个它们的**狗屎帐号**才能继续下一步，而注册会强制要求填你的**电子邮件地址、公司名、职务、软件用途**等信息才能继续安装，非常傻逼！\n\u003e\n\u003e 所以我给出的链接是 Qt 5.12.12 版的离线安装包，这是最后一个支持离线安装的版本！更新的版本中它们只提供“联网安装包”！有能力的同学可以尝试从源码手动构建更新版的 Qt 绕开被联网信息强奸。\n\n安装时会让你勾选 `mingw53_64`，`msvc2017_64` 等选项。\n\n这是 Windows C++ 的多个不同版本的 ABI，互不兼容！\n\n- 如果你想要使用 64 位 MSVC 编译器，那就得勾选 `msvc2017_64` 来安装，安装以后的 dll 文件会位于 `C:/Qt5/msvc2017_64/bin`，需要设置环境变量 `Qt5_DIR` 为 `C:/Qt5/msvc2017_64/lib/cmake`，添加环境变量 `PATH` 为 `C:/Qt5/mingw53_64/bin`。\n- 如果你想要使用 64 位 MinGW 编译器，那就得勾选 `mingw53_64` 来安装，安装以后的 dll 文件会位于 `C:/Qt5/mingw53_64/bin`，需要设置环境变量 `Qt5_DIR` 为 `C:/Qt5/mingw53_64/lib/cmake`，添加环境变量 `PATH` 为 `C:/Qt5/mingw53_64/bin`。\n\n建议新手勾选 `mingw53_64`、`Qt Creator`、`MinGW 编译器` 选项，避免配置编译器的烦恼。\n\n\u003e 如果勾选了 `msvc2017_64`，那么你还需要单独再安装一个 VS2022，这货安装起来比 Qt 还慢。\n\n\u003e 如果你的硬盘空间不值钱，那就都勾选吧，反正装多了也不吃亏。\n\nQt Creator 是 Qt 自带的一款 IDE，具有语义高亮、跳转定义、断点调试等功能，且与 Qt 库集成甚佳。\n\n## 构建实验源码\n\n在本项目根目录中，有许多形如 `01_xxx` 的子文件夹，每一个都是一期课程的源码。\n\n以第一期课程为例：\n\n第一期课程是实现一个“九九乘法表”，源码位于 `01_9x9_table` 子文件夹下。\n\n请先进入此子文件夹后，再运行 CMake 构建。\n\n对于 IDE 用户则请打开此子文件夹下的 CMakeLists.txt。\n\n### Linux / MacOS\n\n进入第一课的源码目录，开始构建：\n\n```bash\ncd 01_9x9_table\ncmake -B build\ncmake --build build\n```\n\n构建完成后会生成 `build/01_9x9_table` 这个可执行文件。\n\n### Windows\n\n用你喜欢的 IDE（Qt Creator 或 VS2022）打开 `01_9x9_table` 文件夹下的 `CMakeLists.txt`。\n\n打开后 IDE 会自动配置 CMake，然后按 Ctrl+B 即可构建。\n\n如果 CMake 报错找不到 Qt5，可能是因为你安装在非默认路径，请你在 `find_package(Qt5)` 前加一行：\n\n```cmake\nset(Qt5_DIR D:\\Qt5\\mingw53_64\\lib\\cmake)\n```\n\n\u003e 警告：此处的 `D:\\Qt5\\mingw53_64` 要改成你的 Qt 安装路径，请替换成你自己真正的安装路径！否则找不到！\n\n后面的 `\\lib\\cmake` 是必须的后缀，在你的安装路径后面加上 `\\lib\\cmake` 后缀，才能找到。\n\n\u003e 原理是 CMake 会从这个路径中中寻找 `Qt5Config.cmake` 这个文件，如果你找到了这个文件，请设为这个文件所在的文件夹。\n\n设置后，请你删除整个 `build` 或 `out` 文件夹，然后重新运行 CMake，否则设置无效！\n\n## 运行实验程序\n\n### Linux\n\n运行可执行文件：\n\n```bash\nbuild/01_9x9_table\n```\n\n\u003e 如果报错，说明你可能是 WSL 的受害者，请检查你是否真的配置好了图形界面。你可以运行如 `xclock` 这类非 Qt 的图形程序，检查图形界面是否正常，从而排除 Qt 本身的问题。\n\n### Windows\n\nIDE 打开 `01_9x9_table` 文件夹下的 `CMakeLists.txt`。\n\nIDE 中点击运行键或按 F5，即可运行程序。\n\n也可以手动找到 `out\\x64-Debug\\01_9x9_table.exe` 双击运行。\n\n如果没有配置过 `PATH` 变量，会报错找不到 `Qt5Widgets.dll`，请把 `C:\\Qt5\\mingw53_64\\bin` 添加到 `PATH` 后重启 IDE 即可生效，如果还不行就重启电脑。\n\n\u003e 警告：此处的 `C:\\Qt5\\mingw53_64` 要改成你的 Qt 安装路径，请替换成你自己真正的安装路径！否则找不到！\n\n如果不想修改 `PATH`，也可以在命令提示符中运行：\n\n```bash\ncd out\\x64-Debug\nC:\\Qt5\\mingw53_64\\bin\\windeployqt.exe 01_9x9_table.exe\n```\n\n这里的 `windeployqt` 是一个实用工具，参数指定为你的 exe 文件运行一遍后，会自动把所有 Qt 所需的 dll 自动拷贝到和当前可执行文件同目录，从而让你的 exe 运行时能找得到它们。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallel101%2Fqtguide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparallel101%2Fqtguide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallel101%2Fqtguide/lists"}