# 重新生成项目后的代码移植方法 这份说明的目标是: 1. 重新新建一个干净的 Qt Widgets 工程。 2. 不沿用旧工程的 `.sln / .vcxproj / .vs / x64`。 3. 只把当前已经实现好的业务代码移植过去。 这样最稳,也最不容易把旧工程状态带进来。 ## 一、建议的新建方式 在 Visual Studio 里重新新建一个 Qt Widgets Application。 建议保持这些配置: - Qt:`5.13.1` - 平台:`x64` - 编译器:和你当前环境一致 - Qt Modules:`core;gui;widgets` 新工程创建完成后,先确保它能空工程编译通过一次。 ## 二、不要移植的内容 下面这些不要从旧工程复制过去: - `.vs/` - `x64/` - `20260320.*` 这些中间目录 - 旧的 `.sln` - 旧的 `.vcxproj` - 旧的 `.vcxproj.filters` - 旧的 `.vcxproj.user` - `Browse.VC.db` 一类缓存 原则很简单: 只移植源码,不移植工程缓存和生成物。 ## 三、需要复制过去的目录和文件 把下面这些直接复制到新工程根目录: - `APP/` - `DRI/` - `LOGIC/` - `EXTEN/` - `main.cpp` 如果你想保留当前这套界面和调试窗口,这些就是最小必需集合。 ## 四、可以不要的旧模板文件 如果新工程自动生成了自己的 `MainWindow` 或其他模板文件,而你准备直接用当前这套代码,那么这些模板文件可以删掉或从工程里移除。 当前仓库里这些文件不是主链必需: - `_new_keyboard.cpp` - `_new_keyboard.h` - `_new_keyboard.ui` - `_new_keyboard.qrc` 它们现在没有参与主入口逻辑。 ## 五、把文件加回新工程的方法 推荐用 Visual Studio 的“添加现有项”。 ### 1. 源文件加入工程 把这些 `.cpp` 加到新工程: - `APP\\APP_ChatGptButton.cpp` - `APP\\APP_DebugPanel.cpp` - `APP\\APP_GlassCard.cpp` - `APP\\APP_KeyButton.cpp` - `APP\\APP_ThemeSwitch.cpp` - `APP\\APP_UIWindow.cpp` - `DRI\\DRI_DeviceState.cpp` - `DRI\\DRI_HidDevice.cpp` - `EXTEN\\EXTEN_Theme.cpp` - `LOGIC\\LOGIC_DeviceSession.cpp` - `LOGIC\\LOGIC_HidProtocol.cpp` - `LOGIC\\LOGIC_KeypadModel.cpp` - `main.cpp` ### 2. 头文件加入工程 把这些 `.h` 加到新工程: - `APP\\APP_ChatGptButton.h` - `APP\\APP_DebugPanel.h` - `APP\\APP_GlassCard.h` - `APP\\APP_KeyButton.h` - `APP\\APP_ThemeSwitch.h` - `APP\\APP_UIWindow.h` - `DRI\\DRI_DeviceState.h` - `DRI\\DRI_HidDevice.h` - `EXTEN\\EXTEN_Theme.h` - `LOGIC\\LOGIC_DeviceSession.h` - `LOGIC\\LOGIC_HidProtocol.h` - `LOGIC\\LOGIC_KeypadModel.h` ## 六、新工程需要保留的工程设置 请确认新工程至少有这些设置: ### 1. Include 目录 `C/C++ -> Additional Include Directories` 至少包含: - `$(ProjectDir)` 这样代码里的这类包含才能工作: - `#include "APP/APP_UIWindow.h"` - `#include "DRI/DRI_HidDevice.h"` - `#include "LOGIC/LOGIC_HidProtocol.h"` ### 2. Qt 模块 保持: - `core` - `gui` - `widgets` ### 3. 字符集 保持: - `Unicode` ### 4. UTF-8 编译 建议保留: - `/utf-8` ## 七、这套代码迁移时有一个好处 当前新增代码已经特意改成了“普通 C++ 回调”,不是自定义 Qt 信号/槽项目项。 这意味着迁移时: - 不需要额外手工加 `QtMoc` 条目 - 不需要改 `.vcxproj` 去注册新 moc 头 - 只要把 `.cpp/.h` 作为普通源码文件加进去即可 这一步会明显降低“工程能编但 VS 打不开”这类问题。 ## 八、HID 相关设置 `DRI\\DRI_HidDevice.cpp` 里已经用了: - `#pragma comment(lib, "hid.lib")` - `#pragma comment(lib, "setupapi.lib")` 所以一般不需要你再手工去 Linker 里加库。 只要是 Windows 桌面工程即可。 ## 九、迁移后你应该先验证什么 迁移完成后,不要先看业务联动,先按这个顺序验证: 1. 工程能正常打开 2. 工程能 `Debug|x64` 编译通过 3. 程序能启动 4. 主界面正常显示 5. 下方调试窗口正常显示 6. 能枚举到 `VID=0x1209 / PID=0x0001 / UsagePage=0xFF00 / Usage=0x0002` 7. 能看到收到的原始包 8. 能看到 `0x04` 包的中文解析 ## 十、最稳的实际操作顺序 推荐直接按下面顺序做: 1. 新建一个全新的 Qt Widgets 工程 2. 先空工程编译一次 3. 关闭 VS 4. 把 `APP/DRI/LOGIC/EXTEN/main.cpp` 复制过去 5. 删除新模板里不用的 `MainWindow` 一类文件 6. 打开新工程 7. 用“添加现有项”把上面列出的 `.cpp/.h` 加入工程 8. 检查 Qt modules 和 include 目录 9. 编译 10. 接设备验证调试窗口 ## 十一、如果你想让我继续帮你做 如果你重新生成了一个新工程目录,我可以直接帮你做这几件事: 1. 把当前代码拷过去 2. 帮你把新 `.vcxproj` 补成可编译状态 3. 再做一次编译验证 你只要把新工程路径告诉我即可。