You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Src/nmNum/nmSubWxs/nmWxRCDialog.cpp

125 lines
4.2 KiB
C++

#include "nmWxRCDialog.h"
#include <QVBoxLayout>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QHeaderView>
#include <QPushButton>
#include <QDebug>
#include <QTabWidget>
#include "ZxBaseUtil.h"
#include "nmWxRCWell.h"
//#include "nmGUIComponentBase.h"
Q_DECLARE_METATYPE(double *)
nmWxRCDialog::nmWxRCDialog()
: m_pTableWidget(NULL),
m_pWellWidget(NULL)
{
this->initUI();
this->setWindowTitle(tr("OilReservoir setting"));
this->resize(800, 400);
}
nmWxRCDialog::nmWxRCDialog(QVector<QString> vWellNames, QVector<double> vWellRadius)
: m_pTableWidget(NULL),
m_pWellWidget(NULL),
m_vWellNames(vWellNames),
m_vWellRadius(vWellRadius)
{
this->initUI();
this->setWindowTitle(tr("OilReservoir setting"));
this->resize(800, 400);
}
void nmWxRCDialog::on_save() {
// 保存油藏参数
QString sDir = ZxBaseUtil::getCurWellDirOf("Nm/Solver");
QString sFile = sDir + "par.txt";
QFile file(sFile);
//检查
if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qWarning("Cannot open file for writing: %s", qPrintable(file.errorString()));
return;
}
QTextStream out(&file);
for (int i = 0; i < m_vOriReservoirPar.size(); i++) {
out << m_vOriReservoirPar[i] << "\n";
}
file.close();
// 保存井信息
m_pWellWidget->saveData(ZxBaseUtil::getCurWellDirOf("Nm/Solver") + "wells.txt");
this->accept();
}
void nmWxRCDialog::initUI() {
QVBoxLayout* mainLayout = new QVBoxLayout;
this->setLayout(mainLayout);
QTabWidget* tabWidget = new QTabWidget;
mainLayout->addWidget(tabWidget);
// 油藏属性设置
tabWidget->addTab(this->initOilReservoirUI(), tr("OilReservoir"));
tabWidget->addTab(this->initWellsUI(), tr("Wells"));
// 井属性设置
// 下方的操作按钮
// 底部按钮
QHBoxLayout* hLayout = new QHBoxLayout;
QPushButton* saveBT = new QPushButton(tr("Save"));
QPushButton* cancelBT = new QPushButton(tr("Cancel"));
connect(saveBT, SIGNAL(clicked()), this, SLOT(on_save()));
connect(cancelBT, SIGNAL(clicked()), this, SLOT(reject()));
hLayout->addStretch();
hLayout->addWidget(saveBT);
hLayout->addWidget(cancelBT);
mainLayout->addLayout(hLayout);
}
QWidget* nmWxRCDialog::initWellsUI() {
m_pWellWidget = new nmWxRCWell(m_vWellNames, m_vWellRadius, NULL);
return m_pWellWidget;
}
QWidget *nmWxRCDialog::initOilReservoirUI() {
QWidget* container = new QWidget;
QVBoxLayout* mainLayout = new QVBoxLayout;
container->setLayout(mainLayout);
mainLayout->setSpacing(0);
mainLayout->setContentsMargins(0, 0, 0, 0);
// names
QStringList nameList;
nameList << tr("Pressure: ") << tr("Permeability: ") << tr("Thickness: ") << tr("Viscosity: ") << tr("Coefficient: ") << tr("Porosity: ") << tr("Compressibility: ") << tr("kx/kz: ") << tr("FlowNum: "); // 定义表头内容
// 单位列表
QStringList unitList;
unitList << "MPa" << "mD" << "m" << "mPa.s" << "" << "" << "MPa" << "" << "";
// 各个参数初始值
// m_vOriReservoirPar.push_back(30);
// m_vOriReservoirPar.push_back(100);
// m_vOriReservoirPar.push_back(5);
// m_vOriReservoirPar.push_back(1);
// m_vOriReservoirPar.push_back(1.1);
// m_vOriReservoirPar.push_back(0.1);
// m_vOriReservoirPar.push_back(0.0035);
// m_vOriReservoirPar.push_back(1);
m_vOriReservoirPar.push_back(34.47);
m_vOriReservoirPar.push_back(15.1454);
m_vOriReservoirPar.push_back(30.48);
m_vOriReservoirPar.push_back(1.5);
m_vOriReservoirPar.push_back(1);
m_vOriReservoirPar.push_back(0.23);
m_vOriReservoirPar.push_back(0.00043511);
m_vOriReservoirPar.push_back(1);
m_vOriReservoirPar.push_back(5);
for (int i = 0; i < nameList.size(); i++) {
QVariant v = QVariant::fromValue(&m_vOriReservoirPar[i]);
// nmGUIComponentBase* testCom = new nmGUIComponentBase(nameList[i], v, NM_GUI_Component_Value_Type_Double, unitList[i]);
// mainLayout->addWidget(testCom);
}
// 添加垂直弹簧
QSpacerItem *verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
mainLayout->addSpacerItem(verticalSpacer);
return container;
}