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(); + } } }