#pragma once #include "qglobal.h" #if (QT_VERSION >= 0x050000) #include #define QWebView QWebEngineView #else #include #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& 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&); // 获取某个参数的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& 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 m_listProps; // 相态选择(从前面传递过来) // map["MainOption"] = (int)opMain; // map["SubOption"] = (int)fluidType; QMap m_mapPhaseInfos; // 临时变量不涉及序列化 PvtFluidType m_oPft; //可以是单相,也可以是多相组合 // 调用的算法 iAlgPseuMethodBase* m_pAlgPseu; // 参数列表(左侧) QMap m_mapParas; };