diff --git a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp index 82d3fb5..883262e 100644 --- a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp +++ b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp @@ -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" 对象 diff --git a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp index ba4d85b..1e308fb 100644 --- a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp +++ b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp @@ -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 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); diff --git a/Src/nmNum/nmSubWxs/nmWxParaPropertyPebi.cpp b/Src/nmNum/nmSubWxs/nmWxParaPropertyPebi.cpp index 4c6bfad..72ceed0 100644 --- a/Src/nmNum/nmSubWxs/nmWxParaPropertyPebi.cpp +++ b/Src/nmNum/nmSubWxs/nmWxParaPropertyPebi.cpp @@ -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