在界面中可通过下拉框选择当前模型

feature/UI-20260528
lvjunjie 2 days ago
parent a94bc0ac70
commit b1ebaad1bb

Binary file not shown.

@ -5066,8 +5066,12 @@ Please check your input coordinates.</source>
<translation></translation>
</message>
<message>
<source>Current model</source>
<translation></translation>
<source>Current model:</source>
<translation></translation>
</message>
<message>
<source>Model selection</source>
<translation></translation>
</message>
<message>
<source>Oil single-phase constant pvt</source>

@ -71,6 +71,8 @@ signals:
void onOutputResultFieldsToggled(bool checked);
// 查看井结果下拉框切换槽
void onResultWellChanged(int index);
// 当前模型下拉框切换槽
void onCurrentModelChanged(int index);
// 处理时间参考系单选按钮切换
//void onTimeReferenceSystemToggled(bool checked);
@ -123,9 +125,10 @@ private:
QComboBox* m_pResultWellCombo;
bool m_bFillingResultWellCombo;
// 当前模型显示
// 当前模型切换控件
QGroupBox* m_pCurrentModelGroup;
QLabel* m_pCurrentModelValueLabel;
QComboBox* m_pCurrentModelCombo;
bool m_bFillingCurrentModelCombo;
// 输出组组件 (新)
QGroupBox* m_pOutputGroup; // 输出分组框

@ -70,8 +70,9 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
m_pResultWellGroup = nullptr;
m_pResultWellCombo = nullptr;
m_pCurrentModelGroup = nullptr;
m_pCurrentModelValueLabel = nullptr;
m_pCurrentModelCombo = nullptr;
m_bFillingResultWellCombo = false;
m_bFillingCurrentModelCombo = false;
// 初始化图标路径
m_sIconDir = QCoreApplication::applicationDirPath();
@ -189,38 +190,74 @@ void nmWxNumericalDesign::initResultWellGroup()
m_pResultWellGroup->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
}
// 显示当前模型名
// 初始化当前模型切换控件
void nmWxNumericalDesign::initCurrentModelGroup()
{
m_pCurrentModelGroup = new QGroupBox(tr("Current model"), this);
m_pCurrentModelGroup = new QGroupBox(tr("Model selection"), this);
QGridLayout* pGridLayout = new QGridLayout(m_pCurrentModelGroup);
m_pCurrentModelValueLabel = new QLabel(this);
m_pCurrentModelValueLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
m_pCurrentModelValueLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
QLabel* pCurrentModelLabel = new QLabel(tr("Current model:"), this);
m_pCurrentModelCombo = new QComboBox(this);
updateCurrentModelDisplay();
pGridLayout->addWidget(m_pCurrentModelValueLabel, 0, 0);
pGridLayout->setColumnStretch(0, 1);
pGridLayout->addWidget(pCurrentModelLabel, 0, 0, Qt::AlignLeft);
pGridLayout->addWidget(m_pCurrentModelCombo, 0, 1);
pGridLayout->setColumnStretch(0, 0);
pGridLayout->setColumnStretch(1, 1);
m_pCurrentModelGroup->setLayout(pGridLayout);
m_pCurrentModelGroup->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
}
// 按当前成果对应的数据管理器刷新模型
// 按当前成果对应的数据管理器刷新模型下拉框选中项
void nmWxNumericalDesign::updateCurrentModelDisplay()
{
if(m_pCurrentModelValueLabel == nullptr) {
if(m_pCurrentModelCombo == nullptr) {
return;
}
m_bFillingCurrentModelCombo = true;
m_pCurrentModelCombo->clear();
nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getCurrentInstance();
if(pManager == nullptr) {
m_pCurrentModelValueLabel->clear();
m_pCurrentModelCombo->setEnabled(false);
m_bFillingCurrentModelCombo = false;
return;
}
m_pCurrentModelValueLabel->setText(solverModelDisplayName(pManager->getSolverModelType()));
// 根据储层相态过滤可选模型类型
nmDataReservoir* pReservoir = pManager->getReservoirData();
NM_PHASE_TYPE ePhase = (pReservoir != nullptr) ? pReservoir->getPhaseType() : PHASE_UNKNOWN;
NM_SOLVER_MODEL_TYPE eCurrentType = pManager->getSolverModelType();
switch(ePhase) {
case PHASE_Oil:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_ConstPvt), SMT_Oil_ConstPvt);
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_VariablePvt), SMT_Oil_VariablePvt);
break;
case PHASE_Water:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_ConstPvt), SMT_Water_ConstPvt);
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_VariablePvt), SMT_Water_VariablePvt);
break;
case PHASE_Gas:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Gas_VariablePvt), SMT_Gas_VariablePvt);
break;
case PHASE_Oil_Water:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_Water_TwoPhase), SMT_Oil_Water_TwoPhase);
break;
default:
break;
}
int nIndex = m_pCurrentModelCombo->findData(eCurrentType);
if(nIndex >= 0) {
m_pCurrentModelCombo->setCurrentIndex(nIndex);
}
m_pCurrentModelCombo->setEnabled(true);
m_bFillingCurrentModelCombo = false;
}
// 按参与计算井刷新下拉框
@ -684,6 +721,7 @@ void nmWxNumericalDesign::setupConnections()
// 连接生成按钮的点击信号到槽函数
connect(m_pGenerateButton, SIGNAL(clicked()), this, SLOT(onGenerateClicked()));
connect(m_pResultWellCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onResultWellChanged(int)));
connect(m_pCurrentModelCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onCurrentModelChanged(int)));
// 主选项组连接
// 连接齿轮图标按钮的槽函数
@ -787,6 +825,25 @@ void nmWxNumericalDesign::onResultWellChanged(int index)
emit sigResultWellChanged(sWellName);
}
// 当前模型下拉框切换槽,将用户选择的模型类型同步到数据管理器
void nmWxNumericalDesign::onCurrentModelChanged(int index)
{
if(m_bFillingCurrentModelCombo || index < 0 || m_pCurrentModelCombo == nullptr) {
return;
}
NM_SOLVER_MODEL_TYPE eType = static_cast<NM_SOLVER_MODEL_TYPE>(
m_pCurrentModelCombo->itemData(index).toInt());
if(eType <= 0) {
return;
}
nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getCurrentInstance();
if(pManager != nullptr) {
pManager->setSolverModelType(eType);
}
}
void nmWxNumericalDesign::onGenerateClicked()
{
updateDataFromUi();

Loading…
Cancel
Save