#pragma once #include "Defines.h" #include "ZxDataObject.h" #include "iGuiPlot.h" #include "mAlgDefines.h" class ZxDataWell; class ZxObjBase; class ZxObjWmPoint; // WellMap class M_GUI_PLOT_EXPORT iGuiPlotMap : public iGuiPlot { Q_OBJECT public: explicit iGuiPlotMap(bool bUseBtn = true, QWidget *parent = 0); ~iGuiPlotMap(); // 初始化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 appendWmPtObjs(ZxDataObjectList& vecWells); // 创建添加一个Obj(从井数据体中自动创建) ZxObjWmPoint* appendOneWmObj(ZxDataWell* pDataWell); // 鼠标交互式插入窗口(传入的是鼠标坐标/屏幕坐标) ZxObjWmPoint* appendOneWmObjEx(m_Wel_Type oType, QString &sName, \ QVector& vec); ZxObjWmPoint* _createOneWmObj(m_Wel_Type oType, QString &sName); // 返回当前选中的井点对应的数据对象 void getSelectedWellDatas(QVector& vecWells, bool bOnlyOne); protected: // 调整UI void adjustPlotUI(); // 刷新 virtual void updatePlots(); virtual void loadDefaultCurvePF(QVector& vecP, \ QVector& vecF, \ ZxDataWell* pWell); // 绘制Painter函数重载 virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent * event); public slots: // Obj选择状态改变 void slotWmObjSelChanged(bool); // Obj数据发生了改变 void slotWmObjPtsChanged(); // 这是从 tPlotCurveView传递过来的拖拽处理 void slotCheckDragAccepted(QDragEnterEvent* event, bool&b); void slotDealwithDrop(QDropEvent* event); // 确保方格 virtual void slotChangeSizeWithChangedXY(); // 当某个数据对象右键选中时,触发调整右键菜单 virtual void slotAdjustContextMenuBy(ZxObjBase* pObj, QMenu* pMenu); void slotSetAsCurWell(); void slotRunAnalPF(); void slotRunAnalNm(); signals: // Obj选择状态改变 void sigWmObjSelChanged(ZxObjBase*, bool); // Obj数据发生了改变 void sigWmObjPtsChanged(ZxObjBase*); // 获取当前中心井的压力和流量 void sigGetCentralDataPF(QVector& vecP, QVector& vecF); // 以当前选择的井点进行相关的右键菜单触发 void sigSetAsCurWell(ZxDataWell* pDataWell); void sigRunAnalPF(ZxDataWell* pDataWell); void sigRunAnalNm(QVector& vecWells); protected: ZxDataWell* m_pCenterWell; ZxObjWmPoint* m_pWmPtC; };