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

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