void QgsComposerView::mouseMoveEvent( QMouseEvent* e ) { if ( !composition() ) { return; } mMouseCurrentXY = e->pos(); //update cursor position in composer status bar emit cursorPosChanged( mapToScene( e->pos() ) ); updateRulers(); if ( mHorizontalRuler ) { mHorizontalRuler->updateMarker( e->posF() ); } if ( mVerticalRuler ) { mVerticalRuler->updateMarker( e->posF() ); } if ( mPanning ) { //panning, so scroll view horizontalScrollBar()->setValue( horizontalScrollBar()->value() - ( e->x() - mMouseLastXY.x() ) ); verticalScrollBar()->setValue( verticalScrollBar()->value() - ( e->y() - mMouseLastXY.y() ) ); mMouseLastXY = e->pos(); return; } else if ( e->buttons() == Qt::NoButton ) { if ( mCurrentTool == Select ) { QGraphicsView::mouseMoveEvent( e ); } } else { QPointF scenePoint = mapToScene( e->pos() ); if ( mMarqueeSelect || mMarqueeZoom ) { updateRubberBand( scenePoint ); return; } switch ( mCurrentTool ) { case Select: QGraphicsView::mouseMoveEvent( e ); break; case AddArrow: { if ( mRubberBandLineItem ) { mRubberBandLineItem->setLine( mRubberBandStartPos.x(), mRubberBandStartPos.y(), scenePoint.x(), scenePoint.y() ); } break; } case AddMap: case AddRectangle: case AddTriangle: case AddEllipse: case AddHtml: //adjust rubber band item { updateRubberBand( scenePoint ); break; } case MoveItemContent: { //update map preview if composer map QgsComposerMap* composerMap = dynamic_cast<QgsComposerMap *>( mMoveContentItem ); if ( composerMap ) { composerMap->setOffset( scenePoint.x() - mMoveContentStartPos.x(), scenePoint.y() - mMoveContentStartPos.y() ); composerMap->update(); } break; } default: break; } } }
void QgsComposerView::mouseMoveEvent( QMouseEvent* e ) { if ( !composition() ) { return; } if ( e->buttons() == Qt::NoButton ) { if ( mCurrentTool == Select ) { QGraphicsView::mouseMoveEvent( e ); } } else { QPointF scenePoint = mapToScene( e->pos() ); switch ( mCurrentTool ) { case Select: QGraphicsView::mouseMoveEvent( e ); break; case AddArrow: { if ( mRubberBandLineItem ) { mRubberBandLineItem->setLine( mRubberBandStartPos.x(), mRubberBandStartPos.y(), scenePoint.x(), scenePoint.y() ); } break; } case AddMap: case AddShape: //adjust rubber band item { double x = 0; double y = 0; double width = 0; double height = 0; double dx = scenePoint.x() - mRubberBandStartPos.x(); double dy = scenePoint.y() - mRubberBandStartPos.y(); if ( dx < 0 ) { x = scenePoint.x(); width = -dx; } else { x = mRubberBandStartPos.x(); width = dx; } if ( dy < 0 ) { y = scenePoint.y(); height = -dy; } else { y = mRubberBandStartPos.y(); height = dy; } if ( mRubberBandItem ) { mRubberBandItem->setRect( 0, 0, width, height ); QTransform t; t.translate( x, y ); mRubberBandItem->setTransform( t ); } break; } case MoveItemContent: { //update map preview if composer map QgsComposerMap* composerMap = dynamic_cast<QgsComposerMap *>( mMoveContentItem ); if ( composerMap ) { composerMap->setOffset( scenePoint.x() - mMoveContentStartPos.x(), scenePoint.y() - mMoveContentStartPos.y() ); composerMap->update(); } break; } default: break; } } }