|
|
|
|
#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;
|
|
|
|
|
|
|
|
|
|
};
|