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

234 lines
6.1 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 "iWxPvtBase.h"
#include "mToolPvt_global.h"
class iPvtBase;
class iGuiPlot;
class ZxTableView;
class ZxTableModel;
class iWxPvtSubHeader;
class iWxPvtUtilOption;
class M_TOOL_PVT_EXPORT iWxPvtUtilItem : public iWxPvtBase
{
Q_OBJECT
public:
explicit iWxPvtUtilItem(QWidget *parent = 0);
~iWxPvtUtilItem();
// 初始化
virtual void initUI();
// 传递参数
virtual void setInfos(QString sFluidType, QString sPhaseType, QString sPara);
// 设置选项,从外界
virtual void selectMethod(QString s);
// 设置关联
virtual void setBindInfos(iWxPvtSubHeader* pSubHeader, iWxPvtUtilOption* pUtilOption);
// 设置算法载体
virtual void setPvt(iPvtBase* p);
// 返回计算结果
virtual float getResult();
// 返回原始的两列数据
virtual bool getRawData(VecFloat& x, VecFloat& y);
virtual bool getRawData(VVecVariant& vvec);
virtual bool getFixedPtData(float& x, float& y);
// 计算点
virtual bool calResultPos(QPointF& pt);
virtual bool calReferDbPos(QPointF& pt);
// 返回数据
virtual bool getParaValue(QString sPara,
float &fValue,
QString sUnitDest = "");
virtual void forceMethodChanged();
// 文件标识
virtual QString getFilePvtTag();
protected:
// 初始化
virtual void initUI_MainLayout();
virtual void initUI_MethodOptions();
virtual void initUI_MainViews();
virtual QWidget* initUI_Chart();
virtual QWidget* initUI_TableView();
virtual void fillTableViewWithDefault();
virtual void initUI_Others();
virtual void initUI_Others_Btns(QHBoxLayout* pLayoutH);
virtual void initUI_Others_Paras(QHBoxLayout* pLayoutH);
virtual void changeOthersBtns(QString s);
virtual void changeOthersParas(QString s);
virtual void fuzzyLayoutWH(int n, int& szW, int& szH);
void runDataMatch();
void getMathExps(VecPointF& vec);
void updateMatchPlot(VecFloat x, VecFloat y, VecPointF vecExps);
void freshPpcs(float fPpc, float fPpcNew = -1.f);
// check是否温度模式
virtual void checkIfModeT();
// check是否需要考虑PB压力点
virtual void checkIfPbConsidered();
// 算法有多少种
virtual void dealwithMethods();
// 标题
virtual void dealwithTitles();
// 刷新
virtual void refresh();
virtual void refreshByMethod(QString s);
virtual bool refreshByMethod_C(QString s, VecFloat& x, VecFloat& y); //通用方法
virtual bool refreshByMethod_S(QString s, VecFloat& x, VecFloat& y); //特殊方法如Table等
virtual void refreshChart(VVecVariant& vvec);
virtual void refreshChart(VecFloat& x, VecFloat& y);
virtual void refreshTable(VecFloat& x, VecFloat& y);
virtual void refreshHitPoint();
virtual void clearChart();
// 表格数据改变
virtual void freshChartByTableChange();
// Const数据改变
virtual void freshChartByConstChange();
// 显示常数部分
virtual void showConstAbouts(bool bVisible);
// 表格只读
virtual void setTableEditable(bool bEditable);
// 获取当前选中的方法在算法类中的类型剔除Table、Const等特殊
virtual int getMethodSubType();
// 根据不同方法,对算法类赋值
virtual void setMemberValuesOfAlgo();
// 获取x方向数据
virtual void getVecX(VecFloat& x);
// 计算点
virtual float calResultPosY(float fX, QString sMethod);
// 辅助信息
virtual void dealwithDesc();
protected:
virtual void paintEvent(QPaintEvent*);
virtual void resizeEvent(QResizeEvent*);
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
public slots:
virtual void slotMainHeaderOptionChanged();
virtual void slotMethodChanged();
void slotConstValueChanged(QString s);
// 表格
void slotTableCellChanged(const QModelIndex&, const QModelIndex&);
void slotTableRowChanged(QModelIndexList listOlds, QModelIndexList listNews, QModelIndex index);
// match 功能20210718
void slotBtnEdit();
void slotBtnMatch();
void slotCbxUsePpc();
void slotMatchExpData(VVecVariant& vvecData);
// 凝析气参数设置
void slotRatioGPP();
// 选择改变
// vecIndexCbxs:所有勾选的方法
// indexRadio:勾选的主方法
void slotMethodChangedCR(const VecInt vecIndexCbxs, const int indexRadio);
signals:
void sigMethodSelected(QString sPara, QString sMethod);
void sigMemberValueNeeded(iPvtBase*& );
void sigReferPbNeeded(QPointF& pt);
void sigTableDataChanged(QString sPara);
protected:
// FluidType这是主类型
QString m_sFluidType;
// PhaseType相类型
QString m_sPhaseType;
// 当前计算的参数对象,通常英文
QString m_sPara;
// 当前参数对象计算方法有几种
QStringList m_listMethods;
// 特殊方法的标识与配置xml文件要对应而且必须放在列表的最前面
QStringList m_listSpecialMethodTags; //所有
// Radio选项
QVector<QRadioButton*> m_vecRadios;
// 布局
QVBoxLayout* m_pMainLayout;
// 辅助信息显示
QLabel* m_pLblDesc;
// SubHeader
iWxPvtSubHeader* m_pSubHeader;
// UtilOption
iWxPvtUtilOption* m_pUtilOption;
// 对应的实体类
iPvtBase* m_pPvt;
// 绘图/表格展示
iGuiPlot* m_pWxPlot;
ZxTableView* m_pTableView;
ZxTableModel* m_pTableModel;
// 坐标轴
QString m_sTitleX;
QString m_sTitleY;
QString m_sUnitX;
QString m_sUnitY;
// 结果的点
QPointF m_ptResult;
QPointF m_ptReferPb;
// Const
float m_fConst;
QVector<QWidget*> m_vecConstCtrls;
// 是否温度模式
bool m_bModeT;
// 是否需要考虑PB压力点
bool m_bReferPbConsidered;
// 当前选项
QString m_sLastMethod;
// match 功能20210718
QPushButton* m_pBtnEdit;
QPushButton* m_pBtnMatch;
QLabel* m_pLblPpcs;
QCheckBox* m_pCbxUsePpc;
VVecVariant m_vvecExps; //match需要的edit数据
QLineEdit* m_pTbxGPP;
QLabel* m_pLblGPP;
};