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

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