#pragma once #include "nmObjToolBase.h" #include "nmObjLineCrack.h" // 数值试井绘图对象之工具(线) class NM_PLOT_EXPORT nmObjLineCrackTool : public nmObjToolBase { Q_OBJECT public: nmObjLineCrackTool(); public: // 鼠标各种响应 virtual bool onLeftDown(const QPointF& pt) override; virtual bool onLeftUp(const QPointF& pt) override; virtual bool onLeftDoubleClick(const QPointF& pt) override; virtual bool onMouseMove(const QPointF& pt) override; // 绘制 virtual void onPaint(QPainter* painter, const ZxPaintParam& param) override; private: // 绑定数据对象情况下绘制(真实) void paintTrackingRealObj(QPainter* painter, const ZxPaintParam& param); // 尚未绑定数据对象情况下绘制(虚拟) void paintTrackingVirtualObj(QPainter* painter, const ZxPaintParam& param); protected: // 根据鼠标当前选择情况确定不同的光标类型 virtual Qt::CursorShape getCursorBy(const int& nOption, const int& nSubIndex) override; protected: QVector m_vecPoints; // 鼠标点缓存 ZxPlot* m_pCurPlot; // 获取当前画布 QVector m_vecCurAllPts; // 当前画布上所有点 };