#pragma once #include "iGuiPlot.h" #include "mAlgDefines.h" class ZxDataWell; class ZxObjBase; class ZxObjWmPoint; class ZxObjSegLine; //ZXF20240703 //水平井段设置 class M_GUI_PLOT_EXPORT iGuiPlotSeg : public iGuiPlot { Q_OBJECT public: explicit iGuiPlotSeg(bool bUseBtn = true, QWidget *parent = 0); ~iGuiPlotSeg(); // 初始化UI virtual void initUI(QString sTitle, QSize szDefault = QSize(265, 203)); // 反序列化后,把数据重新加入m_mapCurveData与m_mapCurveType virtual void resetAfterDeserialized(); // 刷新图形 virtual void runUpdate(); // 设置中心井 void setCentralWell(ZxDataWell* p); // 返回井点信息 bool getWmInfos(QVector& vecWms); // 添加中心水平井 void appendWmPtCObj(float fTop, float fBottom, QStringList listSegTags, QMap > mapInfos); // 创建添加一个Obj ZxObjWmPoint* appendOneWmObj(m_Wel_Type oType, QString &sName, QVector& vec, bool bCentral = false); ZxObjWmPoint* _createOneWmObj(m_Wel_Type oType, QString &sName, QVector& vec); //添加产液线 //添加产液线对象 ZxObjSegLine* appendSegObj(QString& sName, QMap& map); //添加新的产液线对象 ZxObjSegLine* _createOneSegObj(QString &sName,QMap& map); //等间隔布局(弹框,对话框设置,根据起始深度和终止深度和设置间隔进行布局) void calEquLayout(); //整体一起设置 void calWholeSet(); //鼠标交互整体调整ZXF202409 void calTotalSet(); protected: // 调整UI void adjustPlotUI(); // 刷新 virtual void updatePlots(); // 绘制Painter函数重载 virtual void paintEvent(QPaintEvent *); //改变其他产液线(动的产液线)ZXF202409整体一起联动(鼠标交互后操作) void setOtherSegLine(ZxObjSegLine* pSrcSegLine); public slots: // Obj选择状态改变 void slotWmObjSelChanged(bool); // Obj数据发生了改变 void slotWmObjPtsChanged(); //ObjSegLine数据改变 void slotObjSegLineChanged(); //对产液线参数进行修改 void slotSegTableChanged(QString sTagName, QString sParam, double fVal); //属性 void slotShowProperty(); signals: // Obj选择状态改变 void sigWmObjSelChanged(ZxObjBase*, bool); // Obj数据发生了改变 void sigWmObjPtsChanged(ZxObjBase*); // 获取当前中心井的压力和流量 void sigGetCentralDataPF(QVector& vecP, QVector& vecF); //ObjSegLine改变 void sigObjSegLineChanged(ZxObjBase*); //属性 void sigShowProperty(); protected: ZxDataWell* m_pCenterWell; ZxObjWmPoint* m_pWmPtC; //是否整体调整(鼠标交互的时候) bool m_bTotalSet; };