#include //#include "ZxBaseUtil.h" #include "nmObjPoint.h" #include "nmObjPointTool.h" nmObjPointTool::nmObjPointTool() : nmObjToolBase() { setText(tr("nObjPointTool")); m_oNot = NOT_Point; } bool nmObjPointTool::onLeftDown(const QPointF& pt) { if (NULL == 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 nmObjPointTool::onMouseMove(const QPointF& pt) { if (NULL == m_pObj) //绘图对象尚未创建 { m_ptMove = pt; if (m_bTracking) { m_rtTracker = getView()->adjustRectFitViewAspect(getTrackRect()); updateLastMoveArea(true); } return true; } else //业已绑定绘图对象 { return nmObjToolBase::onMouseMove(pt); } } bool nmObjPointTool::onLeftUp(const QPointF& pt) { if (NULL == 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 nmObjPointTool::onLeftDoubleClick(const QPointF& pt) { return nmObjToolBase::onLeftDoubleClick(pt); } bool nmObjPointTool::onMouseWheel(const QPointF& pt, int delta) { return nmObjToolBase::onMouseWheel(pt, delta); } void nmObjPointTool::onPaint(QPainter* painter, const ZxPaintParam& param) { nmObjPoint* pObj = dynamic_cast(m_pObj); if (pObj == NULL) { painter->save(); QPointF pt1 = getCurrentPos(); float r = 1.5f; int nStyle = 3; bool bFilling = true; QColor clr = QColor(0, 255, 0); ZxDrawHelper::drawPoint(painter, pt1, nStyle, r, bFilling, clr); Qt::CursorShape o = Qt::CrossCursor; changeCursor(o); painter->restore(); } else { if (m_bTracking) { if (m_oHitOption == OHO_Point) { painter->save(); QPointF pt1 = getCurrentPos(); float r = pObj->getDotRadius(); int nStyle = pObj->getDotStyle(); bool bFilling = pObj->getDotFilling(); QColor clr = pObj->getDotColor(); ZxDrawHelper::drawPoint(painter, pt1, nStyle, r, !bFilling, clr); Qt::CursorShape o = getCursorBy((int)m_oHitOption, pObj->m_nHitIndex); changeCursor(o); painter->restore(); } } } } Qt::CursorShape nmObjPointTool::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; }