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/nmObjLimitTool.h

48 lines
1.2 KiB
C

#pragma once
#include "nmObjToolBase.h"
// 数值试井绘图对象之工具(边界范围,其实也是多边形)
class NM_PLOT_EXPORT nmObjLimitTool : public nmObjToolBase
{
Q_OBJECT
public:
nmObjLimitTool();
public:
// 鼠标各种响应
virtual bool onLeftDown(const QPointF& pt) override;
virtual bool onLeftUp(const QPointF& pt) override;
virtual bool onMouseMove(const QPointF& pt) override;
virtual bool onMouseWheel(const QPointF& pt, int delta) override;
virtual bool onLeftDoubleClick(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<QPointF> m_vecPoints; // 鼠标点缓存
};