#include #include "nmDefines.h" #include "nmObjRegionMark.h" #include "nmObjRegionMarkTool.h" #include "ZxBaseUtil.h" #include "nmObjRegion.h" nmObjRegionMarkTool::nmObjRegionMarkTool() : nmObjToolBase() , m_pCurPlot(nullptr) { setText(tr("nObjRegionMarkTool")); m_oNot = NMOT_RegionMark; } nmObjRegionMarkTool::nmObjRegionMarkTool(ZxPlot* pCurPlot) : nmObjToolBase() , m_pCurPlot(pCurPlot) { setText(tr("nObjRegionMarkTool")); m_oNot = NMOT_RegionMark; } bool nmObjRegionMarkTool::onLeftDown(const QPointF& pt) { if (nullptr == m_pObj) // 绘图对象尚未创建 { m_ptStart = pt; m_bTracking = true; return true; } else // 已绑定绘图对象 { if (nmObjToolBase::onLeftDown(pt)) { m_ptStart = pt; m_bTracking = true; return true; } return false; } } bool nmObjRegionMarkTool::onLeftUp(const QPointF& pt) { if (nullptr == m_pObj) { getView()->setSnapshotMode(false); if (m_bTracking) { m_bTracking = false; } QVector vec; vec << pt; emit sigPtsFinished(vec); return true; } else // 已绑定绘图对象 { return nmObjToolBase::onLeftUp(pt); } } bool nmObjRegionMarkTool::onMouseMove(const QPointF& pt) { if(NULL == m_pObj) { // 绘图对象尚未创建(鼠标选点ing) m_ptMove = pt; if(m_bTracking) { updateLastMoveArea(true); } return true; } else { // 已绑定绘图对象 return nmObjToolBase::onMouseMove(pt); } } void nmObjRegionMarkTool::onPaint(QPainter* painter, const ZxPaintParam& param) { nmObjRegionMark* pObj = dynamic_cast(m_pObj); if (pObj == nullptr) { Qt::CursorShape o = Qt::ArrowCursor; changeCursor(o); } } Qt::CursorShape nmObjRegionMarkTool::getCursorBy(const int& nOption, \ const int& nSubIndex) { if (nOption < 0) { return Qt::ArrowCursor; } ObjHitOption oHitOption = (ObjHitOption)nOption; if (oHitOption == OHO_Point) { return (Qt::SizeAllCursor); } return Qt::ArrowCursor; }