From 8e7b945a7c466498a50597f12da9dee939aaa5bf Mon Sep 17 00:00:00 2001 From: Jokul Date: Fri, 24 Jul 2026 09:41:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20setActiveInterface=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=9C=89=E6=95=88=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 传入不存在的接口名会被持久化到配置文件且当前会话速度恒为0。 增加 m_interfaceList.contains 校验,无效接口名直接忽略。 --- docs/project-review.md | 5 +++-- src/networkmonitorapplet.cpp | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/project-review.md b/docs/project-review.md index 9b15818..57f3fb8 100644 --- a/docs/project-review.md +++ b/docs/project-review.md @@ -31,8 +31,9 @@ ### 🟡 中优先级 -**6. `setActiveInterface()` 不校验接口有效性** -可传入不存在的接口名,会被持久化到配置文件。下次启动时虽然会被 `readNetworkStats()` 清空回退,但当前会话期间 `getActiveRxBytes()` 返回 0,速度恒为 0,用户困惑。 +**6. ~~`setActiveInterface()` 不校验接口有效性~~ ✅ 已修复** +~~可传入不存在的接口名,会被持久化到配置文件,当前会话期间速度恒为 0。~~ +已在方法入口增加 `m_interfaceList.contains(interface)` 校验,无效接口名直接忽略。 **7. 速度历史仅记录活动接口** `m_speedHistory` 每秒只给 `m_activeInterface` 追加采样点。非活动接口永不采集,切换到新接口时趋势图为空,需等待数分钟才有数据。若要"切回仍能看到历史",应后台为所有接口持续采样。 diff --git a/src/networkmonitorapplet.cpp b/src/networkmonitorapplet.cpp index 74f7924..1b71b2a 100644 --- a/src/networkmonitorapplet.cpp +++ b/src/networkmonitorapplet.cpp @@ -227,6 +227,14 @@ void NetworkMonitorApplet::refresh() void NetworkMonitorApplet::setActiveInterface(const QString &interface) { + // 校验接口是否存在于当前接口列表中,无效接口名直接忽略 + // 设计原因:传入不存在的接口名会被持久化到配置文件,且当前会话期间 + // getActiveRxBytes() 返回 0 导致速度恒为 0,用户困惑; + // 虽然下次启动 readNetworkStats() 会清空回退,但当前会话不应接受无效值 + if (!m_interfaceList.contains(interface)) { + return; + } + if (m_activeInterface != interface) { m_activeInterface = interface; m_firstUpdate = true;