diff --git a/CMakeLists.txt b/CMakeLists.txt index edc02c8..321b4b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,9 @@ add_library(space.jokul.JNetApplet SHARED set_target_properties(space.jokul.JNetApplet PROPERTIES PREFIX "") +# 将 project(VERSION) 暴露为编译宏,供 C++ version() 兜底使用 +target_compile_definitions(space.jokul.JNetApplet PRIVATE PROJECT_VERSION="${PROJECT_VERSION}") + # 头文件搜索路径指向 src/,使 #include "networkmonitorapplet.h" 可被外部解析 target_include_directories(space.jokul.JNetApplet PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src diff --git a/docs/project-review.md b/docs/project-review.md index e04455a..a54227d 100644 --- a/docs/project-review.md +++ b/docs/project-review.md @@ -47,8 +47,9 @@ ~~所有文件头 `SPDX-FileCopyrightText: 2024 MyCompany`,"MyCompany" 是模板占位符。~~ 已将 8 个源文件的版权头改为 `SPDX-FileCopyrightText: 2026 Jokul`。 -**10. `version()` 无兜底** -若 `pluginMetaData().value("Version")` 返回空(元数据未加载),AboutWindow 版本行显示空白。networkview.qml 有 `"1.0"` 兜底,但 AboutWindow 的 `version` 属性直接来自 `applet.version`,无兜底。 +**10. ~~`version()` 无兜底~~ ✅ 已修复** +~~若 `pluginMetaData().value("Version")` 返回空(元数据未加载),AboutWindow 版本行显示空白。~~ +已在 `version()` 中加兜底:元数据返回空时回退到编译时版本号 `PROJECT_VERSION` 宏。CMakeLists.txt 新增 `target_compile_definitions` 将 `project(VERSION)` 暴露为编译宏。 --- diff --git a/src/networkmonitorapplet.cpp b/src/networkmonitorapplet.cpp index c148592..31eb0d2 100644 --- a/src/networkmonitorapplet.cpp +++ b/src/networkmonitorapplet.cpp @@ -150,7 +150,11 @@ QString NetworkMonitorApplet::version() const // DPluginMetaData::value() 已在 "Plugin" 层级内部查找(源码:frame/pluginmetadata.cpp) // metadata.json 的 { "Plugin": { "Version": "x.y.z" } } 被 DPluginMetaData 加载后, // value("Version") 直接返回版本号,无需再 .value("Plugin").toMap() 展开 - return pluginMetaData().value("Version").toString(); + const QString ver = pluginMetaData().value("Version").toString(); + // 兜底:元数据未加载或无 Version 字段时回退到编译时版本号 + // 设计原因:QML 各处 version 属性兜底不一致(networkview.qml 有 "1.0",AboutWindow 无), + // 统一在后端兜底,避免 AboutWindow 版本行显示空白 + return ver.isEmpty() ? QStringLiteral(PROJECT_VERSION) : ver; } // 返回任务栏网速字体颜色,空串表示跟随系统主题