-
Notifications
You must be signed in to change notification settings - Fork 57
feat: support Qt 6.10 #345
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Also adjusting the logic for finding QtXDGIconLoader. This library only be used in Qt 5. Signed-off-by: ComixHe <heyuming@deepin.org>
Synchronize source files from linuxdeepin/dtkgui. Source-pull-request: linuxdeepin/dtkgui#345
deepin pr auto review代码审查报告总体评价这段代码主要涉及DTK GUI库的CMake配置和核心功能实现,主要改进了Qt版本兼容性处理,特别是Qt6的支持。代码整体结构清晰,但存在一些可以优化的地方。 具体改进建议1. CMake配置改进 (dtkgui.cmake)优点:
改进建议: # 建议将版本检查提取为变量,提高可维护性
set(USE_LIBXDG OFF)
if(NOT DTK_DISABLE_LIBXDG AND ${QT_VERSION_MAJOR} STREQUAL "5")
find_package(Qt5XdgIconLoader REQUIRED)
if(NOT Qt5XdgIconLoader_FOUND)
message(WARNING "XdgIconLoader Not Found, DISABLE LIBXDG !")
set(USE_LIBXDG OFF)
else()
set(USE_LIBXDG ON)
endif()
endif()
# 在后续代码中使用USE_LIBXDG变量而不是DTK_DISABLE_LIBXDG2. 源码依赖管理 (src/CMakeLists.txt)优点:
改进建议: # 建议将版本检查逻辑提取为函数
function(qt_private_modules_check version)
if(version VERSION_GREATER_EQUAL "6.10.0")
set(QT_NO_PRIVATE_MODULE_WARNING ON PARENT_SCOPE)
find_package(Qt${version} REQUIRED COMPONENTS
CorePrivate
GuiPrivate
WaylandClientPrivate
)
endif()
endfunction()
qt_private_modules_check(${QT_VERSION_MAJOR})3. 主题变更处理 (dguiapplicationhelper.cpp)优点:
改进建议: // 建议将主题变更事件创建封装为函数
void createThemeChangeEvent(QWindowSystemInterfacePrivate::ThemeChangeEvent &event)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
// Qt6.10.0+ 不需要参数
#else
event = QWindowSystemInterfacePrivate::ThemeChangeEvent(nullptr);
#endif
}
// 使用时:
void DGuiApplicationHelperPrivate::notifyAppThemeChangedByEvent()
{
QWindowSystemInterfacePrivate::ThemeChangeEvent event;
createThemeChangeEvent(event);
QGuiApplicationPrivate::processThemeChanged(&event);
}4. 测试配置 (tests/CMakeLists.txt)优点:
改进建议: # 建议将Qt依赖配置提取为变量
set(QT_TEST_COMPONENTS Core Gui Widgets DBus Network Test)
if(${QT_VERSION_MAJOR} STREQUAL "6")
list(APPEND QT_TEST_COMPONENTS WaylandClient)
qt_private_modules_check(6)
endif()
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${QT_TEST_COMPONENTS})5. 代码风格和格式化问题:
改进建议:
6. 安全性考虑建议:
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ...)
if(NOT Qt${QT_VERSION_MAJOR}_FOUND VERSION_EQUAL ${QT_VERSION})
message(FATAL_ERROR "Qt version mismatch")
endif()
pkg_check_modules(librsvg REQUIRED IMPORTED_TARGET librsvg-2.0)
if(NOT librsvg_VERSION VERSION_GREATER_EQUAL "2.40.0")
message(FATAL_ERROR "librsvg version must be at least 2.40.0")
endif()7. 性能优化建议
// 缓存localeNames检查结果
static QSet<QString> missingLocales;
if(!missingLocales.contains(fileName)) {
if(!localeNames.isEmpty()) {
qWarning() << fileName << "can not find qm files for locales" << localeNames;
missingLocales.insert(fileName);
}
}
void DGuiApplicationHelper::someFunction(const QString &fileName) // 使用const引用
{
// ...
}总结代码整体质量良好,主要改进方向包括:
这些改进将使代码更加健壮、可维护,并提高其在新版本Qt环境下的兼容性。 |
|
Note
详情{
"src/kernel/dguiapplicationhelper.cpp": [
{
"line": " QString socket_key = \"_d_dtk_single_instance_\";",
"line_number": 1484,
"rule": "S106",
"reason": "Var naming | 2ad926d35b"
}
]
} |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: 18202781743, ComixHe 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 |
Synchronize source files from linuxdeepin/dtkgui. Source-pull-request: linuxdeepin/dtkgui#345
Also adjusting the logic for finding QtXDGIconLoader. This library only be used in Qt 5.