From dc8cc35d51fc2b4272c59ab71600415e6139c208 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Sun, 8 Dec 2013 23:43:05 -0500 Subject: [PATCH] Added simple pointer tracking signals. --- app/MainWindow.cpp | 4 ++-- app/View.cpp | 16 ++++++++++++++++ app/View.h | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/app/MainWindow.cpp b/app/MainWindow.cpp index 9ea1cf1..8c18a4f 100644 --- a/app/MainWindow.cpp +++ b/app/MainWindow.cpp @@ -513,8 +513,8 @@ namespace glabels updateCursorInfo(); connect( view, SIGNAL(zoomChanged()), this, SLOT(updateZoomInfo()) ); - - /* TODO: connect cursor signals to appropriate slots. */ + connect( view, SIGNAL(pointerMoved(double, double)), this, SLOT(updateCursorInfo(double, double)) ); + connect( view, SIGNAL(pointerExited()), this, SLOT(updateCursorInfo()) ); } diff --git a/app/View.cpp b/app/View.cpp index b60648a..8a34933 100644 --- a/app/View.cpp +++ b/app/View.cpp @@ -20,6 +20,7 @@ #include "View.h" +#include #include #include @@ -41,6 +42,8 @@ namespace glabels setZoomReal( 1, false ); mModel = 0; + setMouseTracking( true ); + mScene = new QGraphicsScene(); setScene( mScene ); } @@ -154,4 +157,17 @@ namespace glabels } } + + void View::mouseMoveEvent( QMouseEvent* event ) + { + QPointF pointer = mapToScene( event->x(), event->y() ); + emit pointerMoved( pointer.x(), pointer.y() ); + } + + + void View::leaveEvent( QEvent* event ) + { + emit pointerExited(); + } + } diff --git a/app/View.h b/app/View.h index 738d2db..592494f 100644 --- a/app/View.h +++ b/app/View.h @@ -34,19 +34,40 @@ namespace glabels { Q_OBJECT + ///////////////////////////////////// + // Lifecycle + ///////////////////////////////////// public: View( QWidget *parent = 0 ); + ///////////////////////////////////// + // Signals + ///////////////////////////////////// signals: void zoomChanged(); + void pointerMoved( double x, double y ); + void pointerExited(); + ///////////////////////////////////// + // Parameters + ///////////////////////////////////// public: inline double zoom() const; + + ///////////////////////////////////// + // Model + ///////////////////////////////////// + public: void setModel( LabelModel* model ); + + ///////////////////////////////////// + // Zoom operations + ///////////////////////////////////// + public: void zoomIn(); void zoomOut(); void zoom1To1(); @@ -57,10 +78,18 @@ namespace glabels void setZoomReal( double zoom, bool zoomToFitFlag ); + ///////////////////////////////////// + // Event handlers + ///////////////////////////////////// protected: - void resizeEvent( QResizeEvent *event ); + void resizeEvent( QResizeEvent* event ); + void mouseMoveEvent( QMouseEvent* event ); + void leaveEvent( QEvent* event ); + ///////////////////////////////////// + // Private data + ///////////////////////////////////// private: QGraphicsScene* mScene; @@ -72,6 +101,10 @@ namespace glabels }; + ///////////////////////////////// + // INLINE METHODS + ///////////////////////////////// + inline double View::zoom() const { return mZoom;