#include "nmWxRCDialog.h" #include #include #include #include #include #include #include #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 vWellNames, QVector 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; }