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/mToolDeConv/iWxDeConv.h

163 lines
3.8 KiB
C

#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<iCurveDesc>& vecDescs, \
bool isAdd);
void _changeCurveAttributes(iGuiPlot* pWxPlot);
void clearChart(iGuiPlot* pWxPlot, bool bClearAll = true); //false时只清空曲线不清空点
// 结果表
// void updateRstTables();
signals:
void sigDeconvRsts(QMap<QString, VecDouble>&, 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<QString, QVariant> m_mapParas;
// 右侧属性框
ZxPtyDock* m_pDockPty;
QList<IxPtySource*> m_listProps;
// 调用的算法
cmAlgDeConv* m_pAlg;
// 数据部分,从外部传入指针,此处不负责序列化
// VVecDouble* m_pVvecDataF; //流量数据
// VVecDouble* m_pVvecDataP; //压力数据
ZxSegmentInfo* m_pSegInfo;
ZxObjCurvePressure* m_pBindCurveP;
ZxObjCurveFlow* m_pBindCurveF;
};