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++

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.

#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; //临时不涉及序列化
};