feat(tests): add Qt5/Qt6 compatibility support#51
feat(tests): add Qt5/Qt6 compatibility support#51deepin-bot[bot] merged 1 commit intolinuxdeepin:masterfrom
Conversation
pppanghu77
commented
Apr 24, 2026
- Add conditional package finding for Qt6 or Qt5 dependencies
- Use generator expressions to link appropriate Qt version libraries
- Add preprocessor conditionals for Qt6 vs Qt5 API usage
- Maintain backward compatibility with both Qt frameworks
- Add conditional package finding for Qt6 or Qt5 dependencies - Use generator expressions to link appropriate Qt version libraries - Add preprocessor conditionals for Qt6 vs Qt5 API usage - Maintain backward compatibility with both Qt frameworks
deepin pr auto review这段代码主要是为了支持项目同时兼容 Qt5 和 Qt6,以及对应的 DTK 版本。我将对这段代码进行详细审查,并提出改进建议。 1. 语法逻辑审查CMakeLists.txt 部分:
main.cpp 部分:
2. 代码质量审查
3. 代码性能审查
4. 代码安全审查
5. 综合改进建议改进后的 CMakeLists.txt: set(CMAKE_AUTOMOC ON)
# 尝试查找 Qt6,如果失败则查找 Qt5
find_package(Qt6 QUIET COMPONENTS Core Test)
if(NOT Qt6_FOUND)
find_package(Qt5 REQUIRED COMPONENTS Core Test)
set(QT_VERSION_MAJOR 5)
find_package(DtkCore REQUIRED)
set(DTK_CORE_TARGET Dtk::Core)
else()
set(QT_VERSION_MAJOR 6)
find_package(Dtk6 REQUIRED COMPONENTS Core)
set(DTK_CORE_TARGET Dtk6::Core)
endif()
# 设置 Qt 相关目标
set(QT_CORE_TARGET Qt${QT_VERSION_MAJOR}::Core)
set(QT_TEST_TARGET Qt${QT_VERSION_MAJOR}::Test)
# Enable testing
enable_testing()
# ... 其余代码保持不变 ...
# 使用预定义的目标变量
target_link_libraries(docparser_test
PRIVATE
docparser
${QT_CORE_TARGET}
${DTK_CORE_TARGET}
)
target_link_libraries(docparser_autotest
PRIVATE
docparser
${QT_CORE_TARGET}
${QT_TEST_TARGET}
)改进后的 main.cpp: // SPDX-FileCopyrightText: 2024 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include <QCoreApplication>
#include <QDebug>
#include <QTextCodec>
#include <DTextEncoding>
// ... 其余代码保持不变 ...
int main(int argc, char **argv)
{
// ... 初始化代码 ...
if (fromEncoding.toLower() != "utf-8") {
// 验证编码名称
if (!QTextCodec::codecForName(fromEncoding.toUtf8())) {
qWarning() << "Invalid encoding name:" << fromEncoding;
return -1;
}
auto in = QByteArray::fromStdString(content);
QByteArray out;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool success = Dtk::Core::DTextEncoding::convertTextEncodingEx(in, out, "utf-8", fromEncoding);
#else
bool success = Dtk::Core::DTextEncoding::convertTextEncoding(in, out, "utf-8", fromEncoding);
#endif
if (!success) {
qWarning() << "Failed to convert text encoding from" << fromEncoding;
return -1;
}
content = out.toStdString();
}
// ... 其余代码 ...
}6. 其他建议
这些改进将使代码更加健壮、可维护,并且同时兼容 Qt5 和 Qt6。 |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: Johnson-zs, pppanghu77 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
/forcemerge |
|
This pr force merged! (status: unstable) |