QGIS API Documentation 3.43.0-Master (c67cf405802)
qgsmapmouseevent.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmapmouseevent.h - mouse event in map coordinates and ability to snap
3 ----------------------
4 begin : October 2014
5 copyright : (C) Denis Rouzaud
6 email : denis.rouzaud@gmail.com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSMAPMOUSEEVENT_H
17#define QGSMAPMOUSEEVENT_H
18
19#include <QMouseEvent>
20
21#include "qgspointxy.h"
22#include "qgspointlocator.h"
23#include "qgis_gui.h"
24
25class QgsMapCanvas;
27
37class GUI_EXPORT QgsMapMouseEvent : public QMouseEvent
38{
39#ifdef SIP_RUN
41 if ( dynamic_cast<QgsMapMouseEvent *>( sipCpp ) )
42 sipType = sipType_QgsMapMouseEvent;
43 else
44 sipType = 0;
46#endif
47
48 public:
55 QgsMapMouseEvent( QgsMapCanvas *mapCanvas, QMouseEvent *event );
56
67 QgsMapMouseEvent( QgsMapCanvas *mapCanvas, QEvent::Type type, QPoint pos, Qt::MouseButton button = Qt::NoButton, Qt::MouseButtons buttons = Qt::NoButton, Qt::KeyboardModifiers modifiers = Qt::NoModifier );
68
73 QgsPointXY snapPoint();
74
81 bool isSnapped() const { return mSnapMatch.isValid(); }
82
87 inline QgsPointXY mapPoint() const { return mMapPoint; }
88
95 QgsPointLocator::Match mapPointMatch() const { return mSnapMatch; }
96
103 void setMapPoint( const QgsPointXY &point );
104
110 QgsPointXY originalMapPoint() const { return mMapPoint; }
111
117 QPoint pixelPoint() const { return mPixelPoint; }
118
125 QPoint originalPixelPoint() const { return pos(); }
126
134 void snapToGrid( double precision, const QgsCoordinateReferenceSystem &crs );
135
136 private:
137 QPoint mapToPixelCoordinates( const QgsPointXY &point );
138
140 bool mHasCachedSnapResult;
141
143 QgsPointXY mOriginalMapPoint;
144
146 QgsPointXY mMapPoint;
147
152 QPoint mPixelPoint;
153
155 QgsMapCanvas *mMapCanvas = nullptr;
156
157 QgsPointLocator::Match mSnapMatch;
158};
159
160#endif // QGSMAPMOUSEEVENT_H
Represents a coordinate reference system (CRS).
Map canvas is a class for displaying all GIS data types on a canvas.
A mouse event which is the result of a user interaction with a QgsMapCanvas.
QPoint originalPixelPoint() const
The unsnapped, real mouse cursor position in pixel coordinates.
QgsPointXY originalMapPoint() const
Returns the original, unmodified map point of the mouse cursor.
bool isSnapped() const
Returns true if there is a snapped point cached.
QgsPointXY mapPoint() const
mapPoint returns the point in coordinates
QPoint pixelPoint() const
The snapped mouse cursor in pixel coordinates.
QgsPointLocator::Match mapPointMatch() const
Returns the matching data from the most recently snapped point.
A QgsMapTool which gives events directly in map coordinates and allows filtering of events.
Represents a 2D point.
Definition qgspointxy.h:60
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition qgis_sip.h:191
#define SIP_END
Definition qgis_sip.h:208
const QgsCoordinateReferenceSystem & crs
int precision