fix: 修复打开项目时参数面板显示默认值及样式问题

- ReadProjectData加载储层数据后调用regAttr注册属性到nmAttrRegistry
- loadRsts替换nmWxParameterProperty为nmWxParaPropertyPebi
- loadRsts添加listParas初始化、restoreOldParas和双向同步连接
- nmWxParaPropertyPebi设置ScrollArea背景色为白色
feature/nm-para-property-20260615
lh 3 weeks ago
parent d36c862ac6
commit 597f6243c9

@ -3045,6 +3045,19 @@ bool nmDataAnalyzeManager::ReadProjectData(const QString & filePath)
if(doc.HasMember("Reservoir") && doc["Reservoir"].IsObject()) {
m_reservoirData = new nmDataReservoir;
m_reservoirData->FromJsonValue(doc["Reservoir"]);
// 注册储层属性到 nmAttrRegistry与 createReservoir 保持一致)
if (m_pAttrRegistry) {
m_pAttrRegistry->clear();
m_pAttrRegistry->regAttr("h", &m_reservoirData->getThickness());
m_pAttrRegistry->regAttr("Pi", &m_reservoirData->getInitialPressure());
m_pAttrRegistry->regAttr("K", &m_reservoirData->getPermeability());
m_pAttrRegistry->regAttr("phi", &m_reservoirData->getPorosity());
m_pAttrRegistry->regAttr("Cti", &m_reservoirData->getCt());
m_pAttrRegistry->regAttr("Cf", &m_reservoirData->getCf());
m_pAttrRegistry->regAttr("Soi", &m_reservoirData->getSoi());
m_pAttrRegistry->regAttr("Swi", &m_reservoirData->getSwi());
}
}
// 解析 "Axis" 对象

@ -856,11 +856,20 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \
pWxDockNm1->setWindowTitle(tr("Generate numerical model")); //改变Title
pWxDockNm2->setWindowTitle(tr("Parameters"));
// 自定义窗体指针
nmWxNumericalDesign* pAnalWx = new nmWxNumericalDesign();
nmWxParameterProperty* pParaWx = new nmWxParameterProperty();
Q_ASSERT(nullptr != pAnalWx);
Q_ASSERT(nullptr != pParaWx);
nmWxParaPropertyPebi* pParaWx = new nmWxParaPropertyPebi();
pParaWx->initUI();
QStringList listParas;
listParas << "h" << "Pi" << "K" << "phi" << "Cti" << "Cf" << "Soi" << "Swi";
pParaWx->refreshUIs(listParas);
nmAttrRegistry* pReg = pDataManager->getAttrRegistry();
if (pReg != nullptr)
{
QMap<QString, QVariant> mapInit = pReg->collect(listParas);
pParaWx->restoreOldParas(mapInit);
}
// 建立求解调用连接
connect(pAnalWx, SIGNAL(sigGenerateClicked()),
@ -868,14 +877,19 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \
// 切换查看井结果时刷新曲线窗口
connect(pAnalWx, SIGNAL(sigResultWellChanged(QString)),
pSubWndMain, SLOT(onWellSelected(QString)));
// 建立更新参数栏连接
connect(pAnalWx, SIGNAL(sigIncludeWells()),
pParaWx, SLOT(onUpdate()));
// 双向同步连接
if (pReg != nullptr)
{
connect(pParaWx, SIGNAL(sigParaChanged(QString, QVariant)),
pReg, SLOT(setValue(QString, QVariant)));
connect(pReg, SIGNAL(sigAttrChanged(QString, QVariant)),
pParaWx, SLOT(slotSetParaValue(QString, QVariant)));
}
// 井图元更新连接
// connect(pAnalWx, SIGNAL(sigUpdateWellPlot(nmDataAnalyzeManager*)),
// pSubWndMain, SLOT(slotUpdateWellPlotByDataManager(nmDataAnalyzeManager*)));
//connect(pAnalWx, SIGNAL(sigIncludeWells()),
// pParaWx, SLOT(onUpdate()));
pWxDockNm1->setWidget(pAnalWx);
pWxDockNm2->setWidget(pParaWx);

@ -47,6 +47,9 @@ void nmWxParaPropertyPebi::initUI()
Q_ASSERT(nullptr != pWxBk);
pWxBk->setContextMenuPolicy(Qt::CustomContextMenu);
pWxBk->setAutoFillBackground(true);
QPalette palBk = pWxBk->palette();
palBk.setColor(QPalette::Window, Qt::white);
pWxBk->setPalette(palBk);
pWxBk->setLayout(m_pMainLayout);
// Area, 设置Widget

Loading…
Cancel
Save