#pragma once #include "iGuiPlot.h" #include "nmDefines.h" #include "nmPlot_global.h" #include class nmObjBase; class nmObjPointWell; class ZxDataWell; // 数值试井绘图载体的样例 class NM_PLOT_EXPORT nmGuiPlot : public iGuiPlot { Q_OBJECT public: explicit nmGuiPlot(bool bUseBtn = true, QWidget *parent = 0); ~nmGuiPlot(); // 初始化UI virtual void initUI(QString sTitle, QSize szDefault = QSize(265, 203)); // 初始化Sheet void initSheets(); // 初始化布局 virtual void initMainLayout(); virtual QWidget* initChartLayout(QString sTitle, QSize szDefault); virtual void initChartView(QString sTitle, QSize szDefault); virtual void connectSignals(); // 刷新图形 virtual void runUpdate(); // Action命令执行 virtual bool runAction(QString sAction); // 创建添加一个Obj nmObjBase* appendOneObj(NM_Obj_Type o, QString& sName, QVector& vec); nmObjBase* _createOneObj(NM_Obj_Type o, QString& sName); // 绑定绘图对象的信号 void bindObjSignals(ZxObjBase* pObj); #ifdef QT_DEBUG /// @brief 刷新指定的绘图对象 /// @param sName 绘图对象名称 /// @param vecX 数据点 /// @param vecY 绘图对象名称 /// @param bPressureLike 压力模式还是流量模式,通常都是压力模式 /// @param bUseY2 是否启用第二y轴(右侧) /// @param bClearAll 刷新指定绘图对象时,是否把原有所有绘图对象清除 ZxObjBase* updatePlotObjBy(QString sName, \ VecDouble& vecX, VecDouble& vecY, \ bool bPressureLike = true, \ bool bUseY2 = false, \ bool bClearAll = false); #endif public slots: // Obj选择状态改变 void slotObjSelChanged(bool); // Obj数据发生了改变 void slotObjPtsChanged(); // 删除井对象 void slotDeleteWell(QString wellID); signals: // 绘图对象选择状态发生改变 void sigObjSelChanged(ZxObjBase*, bool); // 绘图对象数据点发生改变 void sigObjPtsChanged(ZxObjBase*); public: // 序列化 virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); // 反序列化后,把数据重新加入m_mapCurveData与m_mapCurveType virtual void resetAfterDeserialized(); // 获取边界的点信息 QVector getObjsByTag(QString objTag); ZxObjBase* getWellObjById(QString id); // 获取边界的信息 QVector getOutlinePoints(); // 获取所有井的信息,包括点和半径 QVector> getWellsInformation(); // 获取所有井的图元 QVector getWellPlots(); // 获取所有井的数据指针 QVector getWellDatas(); // 获取所有井的名称 QStringList getWellNames(); protected: // 绘制Painter函数重载 virtual void paintEvent(QPaintEvent *); };