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/iWxPseuSub.h

173 lines
4.3 KiB
C

#pragma once
#include "qglobal.h"
#if (QT_VERSION >= 0x050000)
#include <QtWebEngineWidgets/QtWebEngineWidgets>
#define QWebView QWebEngineView
#else
#include <QtWebKit/QWebView>
#endif
#include "mAlgDefines.h"
#include "iWxPseuBase.h"
#include "mToolPseu_global.h"
class ZxTableView;
class ZxTableModel;
class iGridRowUtils;
class ZxPtyDock;
class IxPtySource;
class ZxRenderItem;
class ZxObjCurve;
class iCurveDesc;
class iGuiPlot;
class iWxPseuHeader;
class iAlgPseuMethodBase;
class M_TOOL_PSEU_EXPORT iWxPseuSub : public iWxPseuBase
{
Q_OBJECT
public:
explicit iWxPseuSub(QWidget* parent /*= 0*/);
~iWxPseuSub();
// 设置关联
void setPseuHeader(iWxPseuHeader* pSubHeader);
// 初始化
virtual void initUI();
// 导出导入
virtual bool importOrExport(bool bImport);
// 当主窗体相态发生改变时的处理(主+次,其中次为组合,需要解析)
virtual void freshOnPhaseChanged(QMap<QString, QVariant>& map);
// 当Header发生改变时
virtual void freshOnHeaderChanged();
// 初始化算法
virtual void initAlg();
// 算法计算入口
virtual void calAndFreshPseu(bool bCreateIfFirst = true);
// 是否已经正确进行了拟压力计算
virtual bool hasProperPseuRst();
/// @brief 获取 拟压力页面中,拟压力结果表
/// @param vvec,返回数据长度为4分别为压力P/拟压力Ps/偏差因子Zg/黏度Miug
/// 压力,单位 Mpa
/// 拟压力,单位 Pa/sec
/// 偏差因子,单位 Pa/sec
/// 黏度,单位 Pa/sec
virtual bool getPseuRstOf(VVecDouble& vvec);
protected:
// 布局
virtual QWidget *initUI_Chart();
virtual void initUI_DockPty();
virtual void initUI_Others();
// 默认值
virtual void initDefault();
protected:
void bindDockPty(IxPtySource* pPtyObj);
protected:
virtual void clearChart(iGuiPlot* pWxPlot, bool bClearAll = true); //false时只清空曲线不清空点
protected:
virtual void paintEvent(QPaintEvent*);
virtual void resizeEvent(QResizeEvent*);
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
public slots:
virtual void slotHeaderOptionDataChanged();
// 响应左侧GridPty数据的改变注意该函数为父类继承过来的函数不能进行名称更改
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
// 表格
//void slotTableDataChanged(const QModelIndex&, const QModelIndex&);
//void slotTableRowChanged(QModelIndexList listOlds, QModelIndexList listNews, QModelIndex index);
// 窗体构建及图窗口构建过程中涉及的信号
virtual void slotToolbarBuilt(QToolBar* pToolBar);
virtual void slotGraphItemPoliciesInstalled(ZxRenderItem*);
// 图上选中了某一条曲线
// virtual void slotCurveSelected(ZxObjCurve* pCurve, bool bSelected);
signals:
// 从主窗体获取当前的相态(主+次,其中次为组合,需要解析)
void sigGetCurPhaseOptions(QMap<QString, QVariant>&);
// 获取某个参数的PVT数据比如Zg
// vvec为两列
// vvec[0]: p1 Zg1
// vvec[1]: p2 Zg2
// vvec[2]: p3 Zg3
void sigGetPvtDataOf(QString sPara, VVecVariant& vvec);
public:
// 获取结果
//virtual bool getAllResults(QMap<QString, double>& mapResults);
virtual bool savePseu();
virtual bool cachePseuRst(QByteArray& baDataMid, QByteArray& baDataRst);
virtual bool updateByPseuRst(QByteArray& baDataMid, QByteArray& baDataRst);
// 文件标识
virtual QString getFilePseuTag();
protected:
// FluidType这是主类型
QString m_sPseu;
// SubHeader
iWxPseuHeader* m_pSubHeader;
// 左侧输入
QStringList m_listParas; //哪些参数,对应英文标识
// 属性框
ZxPtyDock* m_pDockPty;
QList<IxPtySource*> m_listProps;
// 相态选择(从前面传递过来)
// map["MainOption"] = (int)opMain;
// map["SubOption"] = (int)fluidType;
QMap<QString, QVariant> m_mapPhaseInfos;
// 临时变量不涉及序列化
PvtFluidType m_oPft; //可以是单相,也可以是多相组合
// 调用的算法
iAlgPseuMethodBase* m_pAlgPseu;
// 参数列表(左侧)
QMap<QString, QVariant> m_mapParas;
};