From d36c862ac66cb16c37dd8cbac40c1aa06442319e Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Wed, 17 Jun 2026 14:50:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=82=A8=E5=B1=82?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=AF=B9=E8=AF=9D=E6=A1=86=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8E=E9=9D=A2=E6=9D=BF=E4=B8=8D=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - nmAttrRegistry新增refreshAll()批量通知所有已注册属性刷新UI - updateReservoirData赋值后调用refreshAll()触发sigAttrChanged - 解决赋值运算符不触发sigValueChanged导致Data→UI链路断裂的问题 --- Include/nmNum/nmData/nmAttrRegistry.h | 3 +++ Src/nmNum/nmData/nmAttrRegistry.cpp | 11 +++++++++++ Src/nmNum/nmData/nmDataAnalyzeManager.cpp | 3 +++ 3 files changed, 17 insertions(+) diff --git a/Include/nmNum/nmData/nmAttrRegistry.h b/Include/nmNum/nmData/nmAttrRegistry.h index ed636a2..9937623 100644 --- a/Include/nmNum/nmData/nmAttrRegistry.h +++ b/Include/nmNum/nmData/nmAttrRegistry.h @@ -35,6 +35,9 @@ public: /// @return name→value 映射,未找到的跳过 QMap collect(const QStringList& names) const; + /// @brief 批量通知所有已注册属性刷新 UI(外部批量修改数据后调用) + void refreshAll(); + public slots: /// @brief UI→Data 方向:按 name dispatch 到 nmDataAttribute::setValue diff --git a/Src/nmNum/nmData/nmAttrRegistry.cpp b/Src/nmNum/nmData/nmAttrRegistry.cpp index 7463ed9..bfdda65 100644 --- a/Src/nmNum/nmData/nmAttrRegistry.cpp +++ b/Src/nmNum/nmData/nmAttrRegistry.cpp @@ -78,6 +78,17 @@ QMap nmAttrRegistry::collect(const QStringList& names) const return mapResult; } +void nmAttrRegistry::refreshAll() +{ + QMap::const_iterator iter = m_nameToPtr.constBegin(); + for (; iter != m_nameToPtr.constEnd(); ++iter) { + nmDataAttribute* pAttr = iter.value(); + if (pAttr != nullptr) { + emit sigAttrChanged(iter.key(), pAttr->getValue()); + } + } +} + void nmAttrRegistry::setValue(QString name, QVariant value) { nmDataAttribute* pAttr = m_nameToPtr.value(name, nullptr); diff --git a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp index 7ffadb6..82d3fb5 100644 --- a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp +++ b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp @@ -1357,6 +1357,9 @@ void nmDataAnalyzeManager::updateReservoirData(const nmDataReservoir& newData) { if(m_reservoirData) { *m_reservoirData = newData; // 调用赋值运算符 + if (m_pAttrRegistry) { + m_pAttrRegistry->refreshAll(); + } } }