Skip to content

Commit 4d71491

Browse files
committed
refactor: 重构项目适配 C++23 与 Qt6 生态
主要变更: 1. 提升最低C++标准到C++23,更新相关规则文档 2. 重构LifecycleCallback:移除QObject依赖,新增Qt生命周期适配头文件 3. 重构HttpClient:使用RequestOptions统一参数,拆分无网络测试用例,添加ResultHook与进度回调支持 4. 完善CMake与qmake构建配置,修正源文件列表与依赖 5. 移除过时的Qt6槽函数阻塞调用限制规则
1 parent 1afd88b commit 4d71491

14 files changed

Lines changed: 821 additions & 539 deletions

.trae/rules/cmake-best-practices.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
- 要求 CMake 3.25+;使用 `cmake_minimum_required(VERSION 3.25)`
22
- 优先使用 `target_*` 命令;仅当设置需应用于所有目标时才用全局 `add_compile_definitions`/`add_compile_options`
33
- 禁止全局 `include_directories`/`add_definitions`(路径/定义应按目标控制)
4-
-`target_compile_features(target PRIVATE cxx_std_20)` 设置语言标准
54
-`GNUInstallDirs` 实现可移植安装路径
65
-`FetchContent` 或带版本约束的 `find_package`
76
- 禁止 `file(GLOB)` 收集源文件;显式列出

.trae/rules/cpp-modern.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
- 最低目标 C++20,工具链支持时优先 C++23
1+
- 最低目标 C++23,项目统一使用 C++23 标准
22
-`std::span` 替代指针+长度参数对
33
- 可恢复错误优先用 `std::expected`,而非异常
44
-`constexpr`/`consteval` 进行编译期计算

.trae/rules/qt6-best-practices.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
-`QProperty`/`QBindable` 实现响应式绑定
66
-`std::make_unique` 或 Qt 父对象所有权;禁止裸 `new`
77
- 优先用 `QMetaObject::invokeMethod` 的 functor 重载
8-
- 槽函数中禁止阻塞调用;使用 `QtConcurrent``QThreadPool`
98
- 异步操作使用 `QFutureWatcher``QCoro`
109
- 发射信号时使用 `emit` 关键字
1110
- 元数据反射优先用 `Q_ENUM`/`Q_FLAG`

src/HttpClient/CMakeLists.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
1-
set(PROJECT_SOURCES httpclient_unittest.cc httpclient.cc httpclient.hpp)
1+
set(PROJECT_SOURCES httpclient.cc httpclient.hpp)
22

3-
qt_add_executable(httpclient_unittest ${PROJECT_SOURCES})
3+
# 需要测试服务器的集成测试
4+
qt_add_executable(httpclient_unittest httpclient_unittest.cc ${PROJECT_SOURCES})
45
target_link_libraries(httpclient_unittest PRIVATE Qt::Network Qt::Concurrent
56
Qt::Test)
67
target_include_directories(httpclient_unittest PRIVATE ${CMAKE_SOURCE_DIR}/src)
8+
9+
# 无网络测试:不需要测试服务器
10+
qt_add_executable(httpclient_nonet_unittest httpclient_nonet_unittest.cc
11+
${PROJECT_SOURCES})
12+
target_link_libraries(httpclient_nonet_unittest PRIVATE Qt::Network
13+
Qt::Concurrent Qt::Test)
14+
target_include_directories(httpclient_nonet_unittest
15+
PRIVATE ${CMAKE_SOURCE_DIR}/src)

0 commit comments

Comments
 (0)