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.
66 lines
1.5 KiB
C++
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;
|
|
};
|
|
|
|
|