From 36200e7c50167ef2ca4d88947feb6c6af531a998 Mon Sep 17 00:00:00 2001 From: Jokul Date: Fri, 24 Jul 2026 10:07:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20version()=E5=85=83=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E6=97=B6=E5=9B=9E=E9=80=80=E5=88=B0=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=97=B6=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CMakeLists.txt 新增 target_compile_definitions 将 project(VERSION) 暴露为 PROJECT_VERSION 宏。version() 在 pluginMetaData 返回空时 回退到该宏,避免 AboutWindow 版本行显示空白。 --- CMakeLists.txt | 3 +++ docs/project-review.md | 5 +++-- src/networkmonitorapplet.cpp | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) 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; } // 返回任务栏网速字体颜色,空串表示跟随系统主题