#pragma once #include "nmObjPoint.h" #include "nmDefines.h" #include "nmPlot_global.h" #include "ZxDataWell.h" #include "ZxObjText.h" class nmDataWellBase; // 数值试井绘图对象(点) class NM_PLOT_EXPORT nmObjPointWell : public nmObjPoint { Q_OBJECT ZX_DECLARE_DYNAMIC public: nmObjPointWell(); nmObjPointWell(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY); ~nmObjPointWell(); // 设置初始参数 virtual void init(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY) override; // 设置Tools virtual void initTools() override; // 击中后,ButtonUp后的处理 // pt1:鼠标Down点,pt2:鼠标Up点 virtual bool runMove(const QPointF& pt1, const QPointF& pt2) override; protected: // 设置图元对象的属性标志 virtual void initFlags() override; // 辅助信息 virtual void initSubObjs() override; // virtual void resetOthers(); // 设置显示的标识 void setPointTag(QString s); // 创建后调用 virtual void update() override; public: // 成果序列化 virtual void onSerialize(ZxSerializer* ser) override; virtual void onDeserialize(ZxSerializer* ser) override; // 模版处理(从道理上讲,模版处理与成果序列化机制完全一致) // 但此处放开是为了调用方更灵活的控制 virtual void onLoadTempl(ZxSerializer* ser) override; virtual void onSaveTempl(ZxSerializer* ser) override; // 创建后被调用 virtual void afterCreated() override; // 设置井数据 void setWellData(ZxDataWell* wellObj); // 创建新井 void createWell(); // 编辑井 void editWell(); // 获取井的圆心和半径 QVector getWellInformation(); const QString& getWellID() const; ZxDataWell* getWellData() const; // 删除当前对象里的参数对象 virtual void removeData() override; // 设置当前井来自数据中心的井数据 void setNmWellData(nmDataWellBase* wellData); // 获取当前井数据 nmDataWellBase* getNmWellData(); public slots: // 图元状态改变 void onObjVisibleChanged(bool bIsVisible); public: virtual void paintBack(QPainter* painter, \ const ZxPaintParam& param) override; private: // 存储井的ID,project数据结构里数据存储 // 如果是选择井,则坐标等信息不能修改 ZxObjText* m_pNameLabel; bool m_bSelectWell; QString m_sWellID; ZxDataWell* m_pWellData; nmDataWellBase* m_pNmWellData; // 自定义井数据 NM_WELL_MODEL m_enumWellType; // 当前井的类型 };