fix: 修复储层参数对话框修改后面板不刷新

- nmAttrRegistry新增refreshAll()批量通知所有已注册属性刷新UI
- updateReservoirData赋值后调用refreshAll()触发sigAttrChanged
- 解决赋值运算符不触发sigValueChanged导致Data→UI链路断裂的问题
feature/nm-para-property-20260615
lh 3 weeks ago
parent 61bab73938
commit d36c862ac6

@ -35,6 +35,9 @@ public:
/// @return name→value 映射,未找到的跳过 /// @return name→value 映射,未找到的跳过
QMap<QString, QVariant> collect(const QStringList& names) const; QMap<QString, QVariant> collect(const QStringList& names) const;
/// @brief 批量通知所有已注册属性刷新 UI外部批量修改数据后调用
void refreshAll();
public slots: public slots:
/// @brief UI→Data 方向:按 name dispatch 到 nmDataAttribute::setValue /// @brief UI→Data 方向:按 name dispatch 到 nmDataAttribute::setValue

@ -78,6 +78,17 @@ QMap<QString, QVariant> nmAttrRegistry::collect(const QStringList& names) const
return mapResult; return mapResult;
} }
void nmAttrRegistry::refreshAll()
{
QMap<QString, nmDataAttribute*>::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) void nmAttrRegistry::setValue(QString name, QVariant value)
{ {
nmDataAttribute* pAttr = m_nameToPtr.value(name, nullptr); nmDataAttribute* pAttr = m_nameToPtr.value(name, nullptr);

@ -1357,6 +1357,9 @@ void nmDataAnalyzeManager::updateReservoirData(const nmDataReservoir& newData)
{ {
if(m_reservoirData) { if(m_reservoirData) {
*m_reservoirData = newData; // 调用赋值运算符 *m_reservoirData = newData; // 调用赋值运算符
if (m_pAttrRegistry) {
m_pAttrRegistry->refreshAll();
}
} }
} }

Loading…
Cancel
Save