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.
nmWATI/Src/nmNum/nmSubWxs/nmWxRCWell.cpp

107 lines
3.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "nmWxRCWell.h"
#include <QListWidget>
#include <QHBoxLayout>
#include <QFormLayout>
#include <QLineEdit>
#include <QLabel>
#include <QTableWidget>
#include <QDebug>
nmWxRCWell::nmWxRCWell(QVector<QString> wellNames, QVector<double> wellsRadius, QWidget *parent) :
m_vWellNames(wellNames), m_vWellsRadius(wellsRadius), QWidget(parent)
{
this->initDefaultValue();
this->initUI();
}
void nmWxRCWell::on_selectWell(int index)
{
qDebug() << index;
this->showWellDetail(index);
}
void nmWxRCWell::on_wellSkinChanged(QString v)
{
int index = m_pWellListWidget->currentRow();
m_vWellsSkin[index] = v.toDouble();
}
void nmWxRCWell::initDefaultValue()
{
// 根据井的数量初始化默认值
for (int i = 0; i < m_vWellNames.size(); i++) {
// 井的表皮系数
m_vWellsSkin.append(0);
// 井储系数
m_vWellsReservoirFactor.append(0.1);
// 流量段
m_vWellsTimeNum.append(2);
}
}
void nmWxRCWell::initUI()
{
QHBoxLayout* layout = new QHBoxLayout;
this->setLayout(layout);
QListWidget* wellListWidget = this->initListWidget();
// 坐标的列表页
layout->addWidget(wellListWidget);
QWidget* detailWidget = this->initWellDetailWidget();
// 右边的详情页
layout->addWidget(detailWidget);
// 设置宽度比例
layout->setStretchFactor(wellListWidget, 1);
layout->setStretchFactor(detailWidget, 2);
// 设置默认是第1口井
wellListWidget->setCurrentRow(0);
}
QListWidget* nmWxRCWell::initListWidget()
{
m_pWellListWidget = new QListWidget;
m_pWellListWidget->addItems(m_vWellNames.toList());
connect(m_pWellListWidget, SIGNAL(currentRowChanged(int)), this, SLOT(on_selectWell(int)));
return m_pWellListWidget;
}
QWidget* nmWxRCWell::initWellDetailWidget()
{
QWidget* detailWidget = new QWidget;
QVBoxLayout* mainLayout = new QVBoxLayout;
detailWidget->setLayout(mainLayout);
// 1、井的通用设置
QFormLayout* layout = new QFormLayout;
// 显示井的半径
m_pWellRadiusEdit = new QLineEdit;
m_pWellRadiusEdit->setEnabled(false);
layout->addRow(new QLabel(tr("radius")), m_pWellRadiusEdit);
// 井的表皮系数
m_pWellSkinEdit = new QLineEdit;
connect(m_pWellSkinEdit, SIGNAL(textChanged(QString)), this, SLOT(on_wellSkinChanged(QString)));
layout->addRow(new QLabel(tr("skin")), m_pWellSkinEdit);
// 井储系数
m_pWellReservoirFactorEdit = new QLineEdit;
layout->addRow(new QLabel(tr("RF")), m_pWellReservoirFactorEdit);
// 井的流量段比如井的流量段时2则有2个持续时间和2个流量
m_pWellTimeEdit = new QLineEdit;
layout->addRow(new QLabel(tr("TimeNum")), m_pWellTimeEdit);
mainLayout->addLayout(layout);
// 勾选是 统一设置,还是 单独设置
// 2、井的流量设置
m_pTimeTableWidget = new QTableWidget;
mainLayout->addWidget(m_pTimeTableWidget);
return detailWidget;
}
void nmWxRCWell::showWellDetail(int index)
{
qDebug() << "show well detail " << index << m_vWellsRadius.size();
m_pWellRadiusEdit->setText(QString::number(m_vWellsRadius[index]));
// 井的表皮系数
m_pWellSkinEdit->setText(QString::number(m_vWellsSkin[index]));
// 井储系数
m_pWellReservoirFactorEdit->setText(QString::number(m_vWellsReservoirFactor[index]));
// 井的流量段比如井的流量段时2则有2个持续时间和2个流量
m_pWellTimeEdit->setText(QString::number(m_vWellsTimeNum[index]));
}