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/Include/mTool/mToolPvt/iWxPvtSubHeader.h

193 lines
5.7 KiB
C

#pragma once
#include "mAlgDefines.h"
#include "iWxPvtBase.h"
#include "mToolPvt_global.h"
namespace Ui {
class iWxPvtSubHeader;
}
class M_TOOL_PVT_EXPORT iWxPvtSubHeader : public iWxPvtBase
{
Q_OBJECT
public:
explicit iWxPvtSubHeader(QWidget *parent = 0);
~iWxPvtSubHeader();
/// @brief 设置PVT流体相态其实是枚举类型只是为了支持数组暂时用了int
/// @param nMain 大类,常规/特殊/状态方程其实是PvtFluidClass opMain
/// @param vecSubs 子类,油/气/水/凝析其实是PvtFluidType opSub
//void initPhaseInfos(int nMain, VecInt& vecSubs);
void refreshByPhases(QStringList& listPhases, int n = -1);
// 根据当前是解析还是数值进行简单调整该函数在initUI之前
void adjustUI(bool bAnalMode);
// 初始化
virtual void initUI();
void copyFrom(ZxUiBase* p);
// 返回数据
virtual QString getName();
double getTempBase();
double getPressureBase();
double getGorBase();
VecDouble* getPtrOfValueP();
VecDouble* getPtrOfValueT();
// 文件标识
virtual QString getFilePvtTag();
// 在导航模式下,点击下一步时,先判断本步是否正确
virtual bool checkCurWxInputs();
// 返回所有参数Key为英文ID
virtual bool getAllParaValues(QMap<QString, double>& map, \
bool bOnlyFitted = false, \
bool bClearMap = true);
virtual bool getAllParaValuesUnit(QMap<QString, QString>& map, \
bool bOnlyFitted = false, \
bool bClearMap = true);
virtual bool getParaValue(QString sPara, \
double& dValue, \
QString sUnitDest = "");
public:
// 用于参数传递
// 注意在pvtMain的序列化过程中其本身未进行序列化所以其相关参数暂未涉及
// 故全部放在此处进行维护
QStringList getListPhases();
PvtFluidType getPft();
// 这是从前一个取
QStringList getFuzzyParas(); //哪些参数可以从前一个窗体获取
void setValuesFromPrevWx(QMap<QString, QVariant>& map);//从前一个窗体得到后赋值
// 这是为后一个设置
void getValuesForNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
// 有PvtMain调用
bool freshRstByParaValues(QMap<QString, double>& map, bool bOnlyCt = false);
private:
// 流体参数项
void initFluidParas(bool bInit);
void initAdvCtrls();
void freshAdvCtrls();
// 默认值填入
void initDefault();
// signal
void buildSignals();
// 填入最大最小的单位
void fillUnitOfRange();
// 刷新
void refresh();
// 计算压力温度点
void calPressAndTemp(QLineEdit* pSender = nullptr);
bool _calIncrement(double& d, \
double dMax, double dMin, \
bool bModeP);
bool _calVecOfIncrements(VecDouble& vec, \
double dIncrement, \
double& dMax, double dMin, \
int nFixedSize = -1);
// 油气水饱和度系数
void makesureOgwCoefs();
protected:
virtual void paintEvent(QPaintEvent*);
virtual void resizeEvent(QResizeEvent*);
virtual bool eventFilter(QObject* object, QEvent* event);
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// virtual void onDeserialized();
private slots:
private slots:
void on_cbxByPtCount_clicked();
void slotMaxMinChanged(QString);
// void slotMaxMinStrChanged();
void slotCbxUnitPChanged(const QString s);
void slotCbxUnitTChanged(const QString s);
virtual void slotParaValueChanged();
// 某项参数计算结果数据更改
void slotParaRstDataChanged(QString sPara);
// void slotPvtResultsChanged(QMap<QString,double>& map);
// void slotFluidMainOptionClicked(int nIndex);
// void on_cbxOil_clicked();
// void on_cbxGas_clicked();
// void on_cbxWater_clicked();
// void on_cbxCondense_clicked();
void on_cbxUseAdvanced_clicked();
void on_btnFresh_clicked();
void on_btnDefault_clicked();
private:
void onFluidTypeChanged(PvtFluidClass opMain, PvtFluidType opSub);
signals:
/// @brief 当Header涉及到的一些参数数据更改时触发比如压力数据范围改变
void sigHeaderOptionDataChanged();
/// @brief 当Heade中流体选项发生改变触发
/// @param nMain 大类,常规/特殊/状态方程
/// @param vecSubs 子类,油/气/水/凝析
//void sigHeaderOptionFluidChanged(int nMain, VecInt& vecSubs);
/// @brief 当切换高级选项时,获取数据时,触发
void sigGetAllParaValues(QMap<QString,double>& map);
private:
Ui::iWxPvtSubHeader *ui;
// 压力数据数组
VecDouble m_vecValueP;
// 温度数据数组,温度是后台计算的。
VecDouble m_vecValueT;
//double m_dMaxT; //温度范围固定20-400℃ 摄氏度
//double m_dMinT;
QString m_sLastUnitP;
QString m_sLastUnitT;
// PvtFluidClass m_oPfc;
QStringList m_listParas;// 当前流体对应的参数
QStringList m_listAllParas;// 全部参数,不涉及序列化,此处只是权宜之计,有待完善 TODO
// 注意在pvtMain的序列化过程中其本身未进行序列化所以其相关参数暂未涉及
// 故全部放在此处进行维护
QStringList m_listPhases;
PvtFluidType m_oPft;
bool m_bAnalMode; //临时不涉及序列化
QMap<QString,double> m_mapDefaultValues; //临时不涉及序列化
};