#pragma once #include #include #include "nmObjToolBase.h" #include "nmObjDelete.h" // 数值试井绘图对象之工具(删除键) class NM_PLOT_EXPORT nmObjDeleteTool : public nmObjToolBase { Q_OBJECT public: nmObjDeleteTool(); nmObjDeleteTool(ZxPlot* m_pPlot); virtual ~nmObjDeleteTool(); public: // 鼠标各种响应 virtual bool onLeftDown(const QPointF& pt) override; virtual bool onLeftUp(const QPointF& pt) override; virtual bool onMouseMove(const QPointF& pt) override; virtual bool onRightDown(const QPointF& pt) override; // 工具被移除前恢复视口光标。 void resetDeleteCursor(); // 渲染 void onRender(QPainter* painter, const ZxPaintParam& param); // 绘制 virtual void onPaint(QPainter* painter, const ZxPaintParam& param) override; protected: virtual void onDeactivated() override; // 记录矩形四个点的坐标 QVector m_vecPoints; // 获取当前画布 ZxPlot* m_pPlot; //画布中所有的点 //QVector m_vecAllPos; private: // 悬停和点击统一选择屏幕命中范围内最近的可删除图元。 ZxObjBase* findNearestDeleteObj(const QPointF& pt); void initDeleteCursor(); bool updateDeleteCursor(const QPointF& pt); QCursor m_deleteCursor; // 固定像素尺寸的删除光标 QPointer m_cursorViewport; // 当前使用删除光标的视口 QCursor m_previousCursor; // 恢复原有显式光标 bool m_hadExplicitCursor; };