#pragma once #include "iWxPseuSub.h" #include "mToolPseu_global.h" class iWxPseudoCSub; class iWxPseudoCSubSo; class iWxPseudoCSubInput; class iWxPseudoCSubPseu; class iAlgPseuMethodCompInfo; class M_TOOL_PSEU_EXPORT iWxPseuSubComp : public iWxPseuSub { Q_OBJECT public: explicit iWxPseuSubComp(QWidget *parent = 0); ~iWxPseuSubComp(); // 初始化 virtual void initUI(); // 传递参数 virtual void setInfos(QString sFluidType, QString sPhaseType, QString sPara); // 最后一个SubWx iWxPseudoCSub* getSubWxPseu(); iWxPseudoCSub* getSubWxBy(QString sName); iWxPseudoCSubInput* getSubWxInputs(); // 初始化算法 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); // 当Header发生改变时 virtual void freshOnHeaderChanged(); // 传递参数 //void calAndFreshBy(VecDouble& vecX); // 最终的计算函数 //bool calPseudoC(VecDouble& vecP, VecDouble& vecPs, QString& sAllExpr, bool bLogging); // 刷新最终的Sub图表 //bool freshFinalPs(VecDouble& vecP, VecDouble& vecPs, QString sAllExpr); // 返回数据,触发信息 bool getPseuPseuInfos(VVecDouble& vvec, \ QMap& mapPsInfos, \ QMap& mapOthers); // 保存 // void saveBkInfos(); // 文件标识 virtual QString getFilePseuTag(); virtual bool savePseu(); virtual void fuzzyLayoutWH(int n, int& szW, int& szH); private: virtual void initUI_MethodOptions(); // 除了第一个之外,其它Radio隐藏与显示 void showMostRadios(bool bVisible); // 算法有多少种 virtual void dealwithMethods(); // 算法切换 void refreshByMethod(QString s); // 准备 void preparePsInfos(QMap& mapInfos, bool bOut); void prepareOthers(); // 根据名称查找FitAlg iAlgPseuMethodCompInfo* findAlgFitInfo(QString sName); void freshSubWxSo(iWxPseudoCSubSo* pSub); void freshSubWxPseu(iWxPseudoCSubPseu* pSub); bool fuzzyFitAboutInfos(QMap& map, \ QStringList& listFitNames, \ VecDouble& vecX, int& nSplitIndex); signals: private slots: void slotSubWxChanged(int); // void slotRefreshPseu(); private: QStackedWidget* m_pStackedWx; VecDouble m_vecX; // 临时,对应Input的计算结果数据 VVecDouble* m_pVVecPtrOfPE; // 保存所有的计算结果 VVecDouble m_vvecResults; };