You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmPlot/nmObjDeleteTool.h

66 lines
1.5 KiB
C++

#pragma once
#include <QCursor>
#include <QPointer>
#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<QPointF> m_vecPoints;
// 获取当前画布
ZxPlot* m_pPlot;
//画布中所有的点
//QVector<QPointF> m_vecAllPos;
private:
// 悬停和点击统一选择屏幕命中范围内最近的可删除图元。
ZxObjBase* findNearestDeleteObj(const QPointF& pt);
void initDeleteCursor();
bool updateDeleteCursor(const QPointF& pt);
QCursor m_deleteCursor; // 固定像素尺寸的删除光标
QPointer<QWidget> m_cursorViewport; // 当前使用删除光标的视口
QCursor m_previousCursor; // 恢复原有显式光标
bool m_hadExplicitCursor;
};