diff --git a/docs/project-review.md b/docs/project-review.md index 11f6e8f..9b15818 100644 --- a/docs/project-review.md +++ b/docs/project-review.md @@ -25,8 +25,9 @@ ~~`AboutWindow.qml`、`SettingsWindow.qml`、`TextColorPicker.qml`、`TrafficChartWindow.qml` 全部硬编码浅色,不随系统主题适配。~~ 已为 4 个独立窗口新增 `isDarkMode` 属性(由 networkview.qml 检测后注入),各窗口定义深/浅双色方案切换。深色模式检测改用 `DTK.palette.window.hslLightness < 0.5`(原 `DockPalette.iconTextPalette` 不随系统主题变化)。同时修复 networkview.qml 任务栏图标和 NetworkPopup 弹窗的颜色基:从 `DockPalette.iconTextPalette` 改为 `DTK.palette.windowText`,解决深色模式黑底黑字问题。 -**5. `detectInterfaces()` 过滤规则与 `readNetworkStats()` 不一致** -`init()` 先调 `detectInterfaces()`(读 `/sys/class/net`,仅过滤 `lo`),再调 `readNetworkStats()`(读 `/proc/net/dev`,过滤 `lo`/`veth`/`docker`/`br-`)。首次刷新前,docker/veth 接口会短暂出现在列表中,造成 UI 闪烁。且 `detectInterfaces()` 的结果会被 `readNetworkStats()` 完全覆盖,属于冗余调用。 +**5. ~~`detectInterfaces()` 过滤规则与 `readNetworkStats()` 不一致~~ ✅ 已修复** +~~`init()` 先调 `detectInterfaces()`(仅过滤 `lo`),再调 `readNetworkStats()`(过滤 `lo`/`veth`/`docker`/`br-`),首次刷新前 docker/veth 接口短暂出现造成 UI 闪烁。~~ +已将 `detectInterfaces()` 的过滤规则统一为与 `readNetworkStats()` 一致(`lo`/`veth*`/`docker*`/`br-*`)。 ### 🟡 中优先级 diff --git a/src/networkmonitorapplet.cpp b/src/networkmonitorapplet.cpp index 9494877..74f7924 100644 --- a/src/networkmonitorapplet.cpp +++ b/src/networkmonitorapplet.cpp @@ -424,8 +424,11 @@ void NetworkMonitorApplet::detectInterfaces() m_interfaceList.clear(); for (const QString &entry : entries) { - // 过滤回环接口 - if (entry != "lo") { + // 过滤回环接口和虚拟接口,与 readNetworkStats() 保持一致 + // 设计原因:原仅过滤 lo,docker/veth/br- 接口会短暂出现在列表中, + // 随后被 readNetworkStats() 覆盖,造成 UI 闪烁 + if (entry != "lo" && !entry.startsWith("veth") && + !entry.startsWith("docker") && !entry.startsWith("br-")) { m_interfaceList << entry; } }