#pragma once #include "iDlgBase.h" #include "mToolDeConv_global.h" namespace Ui { class iWxDeConv; } class IxPtySource; class ZxPtyDock; class ZxRenderItem; class iCurveDesc; class ZxTableView; class ZxTableModel; class iGuiPlot; class iGuiPlotPF; class ZxObjCurvePressure; class ZxObjCurveFlow; class ZxObjCurveBase; class ZxSegmentInfo; class iGridRowUtils; class cmAlgDeConv; class M_TOOL_DECONV_EXPORT iWxDeConv : public iDlgBase { Q_OBJECT public: explicit iWxDeConv(QWidget* parent = 0); ~iWxDeConv(); // 设置数据及流动段信息 void setDvDataInfos(ZxObjCurvePressure* pCurveP, \ ZxObjCurveFlow* pCurveF, \ ZxSegmentInfo* pSegmentInfo); // 初始化 virtual void initUI(); protected: // 左侧输入参数初始化 virtual void initUI_Inputs(); void initUI_Inputs_Paras(); //更新输入参数(根据当前数据) // 中间图形部分初始化 virtual void initUI_Chart(); void initUI_Chart_Up(); void initUI_Chart_Down(); //右侧表格部分初始化 virtual void initUI_Outputs(); void initUI_Outputs_Default(ZxTableView* pTableView); #ifdef QT_DEBUG // 返回数据 virtual bool getParaValue(QString sPara, double &dValue, QString sUnitDest = ""); #endif protected: // virtual void paintEvent(QPaintEvent*); // virtual void resizeEvent(QResizeEvent*); virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); public: // 类似clone virtual void copyFrom(ZxUiBase* p); public slots: // 响应左侧GridPty数据的改变,注意:该函数为父类继承过来的函数,不能进行名称更改 virtual void slotParaCtrlValueChanged(QString sPara, QVariant o); // 属性页 virtual void slotGraphItemPoliciesInstalled(ZxRenderItem*); // 曲线选择 void slotCurveSelChanged(bool bSelect); protected: void bindDockPty(IxPtySource* pPtyObj); void simuSelectCurve(); //模拟选择第一条曲线 void changeWithCurve(ZxObjCurveBase* pCurve); QStringList getTableTitlesBy(ZxObjCurveBase* pCurve); protected: // 算法+刷新 virtual void calAndFreshRsts(); virtual bool calDeconvRsts(); virtual void freshDeconvRsts(); // Plot 相关 void updateSubPlotDbLog(); //双对数(数据:从反褶积结果中获取) void updateSubPlotPF(); //压力+流量(数据:从原始绑定的压力流量数据曲线中获取) void updateSubPlotPF_BSPIN();//BSPIN压力数据(数据:从反褶积结果中获取) void _updateSubPlot(bool bHistPF, \ QVector& vecDescs, \ bool isAdd); void _changeCurveAttributes(iGuiPlot* pWxPlot); void clearChart(iGuiPlot* pWxPlot, bool bClearAll = true); //false时,只清空曲线不清空点 // 结果表 // void updateRstTables(); signals: void sigDeconvRsts(QMap&, bool); private slots: void on_btnCal_clicked(); void on_cbxAutoCal_clicked(); void on_btnOK_clicked(); void on_btnCancel_clicked(); private: Ui::iWxDeConv *ui; protected: // 绘图 iGuiPlot* m_pWxPlot; iGuiPlotPF* m_pWxPlotPF; // 左侧输入 // 布局(左侧) iGridRowUtils* m_pGridItemUtils; QStringList m_listParas; //哪些参数,对应英文标识 // 参数列表(左侧) QMap m_mapParas; // 右侧属性框 ZxPtyDock* m_pDockPty; QList m_listProps; // 调用的算法 cmAlgDeConv* m_pAlg; // 数据部分,从外部传入指针,此处不负责序列化 // VVecDouble* m_pVvecDataF; //流量数据 // VVecDouble* m_pVvecDataP; //压力数据 ZxSegmentInfo* m_pSegInfo; ZxObjCurvePressure* m_pBindCurveP; ZxObjCurveFlow* m_pBindCurveF; };