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/mToolPseu/iWxPseuHeader.h

145 lines
3.6 KiB
C

#pragma once
#include "mAlgDefines.h"
#include "iWxPseuBase.h"
#include "mToolPseu_global.h"
namespace Ui {
class iWxPseuHeader;
}
class M_TOOL_PSEU_EXPORT iWxPseuHeader : public iWxPseuBase
{
Q_OBJECT
public:
explicit iWxPseuHeader(QWidget *parent = 0);
~iWxPseuHeader();
/// @brief 设置Pseu流体相态其实是枚举类型只是为了支持数组暂时用了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);
// 外传
void setOtherParas(QMap<QString, double>& maps);
// 初始化
virtual void initUI();
// 返回数据
virtual QString getName();
double getTempBase();
double getPressureBase();
double getGorBase();
VecDouble* getPtrOfValueP();
VecDouble* getPtrOfValueT();
//
double getSpecialV(QString s);
QMap<QString, double> getMapComps();
// 文件标识
virtual QString getFilePseuTag();
// 在导航模式下,点击下一步时,先判断本步是否正确
virtual bool checkCurWxInputs();
public:
// 用于参数传递
// 这是从前一个取
QStringList getFuzzyParas(); //哪些参数可以从前一个窗体获取
void setValuesFromPrevWx(QMap<QString, QVariant>& map);//从前一个窗体得到后赋值
// 这是为后一个设置
void getValuesForNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
private:
// 流体参数项
void initFluidParas();
// 默认值填入
void initDefault();
// signal
void buildSignals();
// 填入最大最小的单位
void fillUnitOfRange();
// 刷新
void refresh();
// 计算压力温度点
void calPressAndTemp();
bool _calIncrement(double& d,
double dMax, double dMin);
bool _calVecOfIncrements(VecDouble& vec,
double dIncrement,
double dMax, double dMin);
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);
private slots:
void slotChangeIncrements();
void slotMaxMinChanged(QString);
void slotMaxMinStrChanged();
void slotCbxUnitMaxMinChanged(const QString s);
virtual void slotParaValueChanged();
void slotCompSubChanged(QMap<QString, double>& map);
void on_btnComposition_clicked();
private:
void onFluidTypeChanged(PvtFluidClass opMain, PvtFluidType opSub);
signals:
//void sigInputRefresh(bool, VVecDouble*);
/// @brief 当Header涉及到的一些参数数据更改时触发比如压力数据范围改变
void sigHeaderOptionDataChanged();
private:
Ui::iWxPseuHeader *ui;
// 压力数据数组
VecDouble m_vecValueP;
// 温度数据数组,温度是后台计算的。
VecDouble m_vecValueT;
double m_dMaxT; //温度范围固定20-400℃ 摄氏度
double m_dMinT;
QString m_sLastUnitMaxMin;
QMap<QString, double> m_mapComps;
// 保存所有的计算结果
//VVecDouble m_vvecResults;
QStringList m_listParas;// 当前流体对应的参数
bool m_bAnalMode; //临时不涉及序列化
};