QGIS API Documentation 3.41.0-Master (fda2aa46e9a)
Loading...
Searching...
No Matches
qgsmaptoolidentifyfeature.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaptoolidentifyfeature.cpp
3 --------------------------------------
4 Date : 22.5.2014
5 Copyright : (C) 2014 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
18#include "moc_qgsmaptoolidentifyfeature.cpp"
19#include "qgsmapcanvas.h"
20#include "qgsmapmouseevent.h"
21
23 : QgsMapToolIdentify( canvas )
24 , mLayer( vl )
25{
26 mToolName = tr( "Identify feature" );
27
28 // set cursor
29 mCursor = QCursor( Qt::CrossCursor );
30}
31
33{
34
35 const QgsPointXY point = mCanvas->getCoordinateTransform()->toMapCoordinates( e->x(), e->y() );
36
37 QList<IdentifyResult> results;
38 if ( !identifyVectorLayer( &results, mLayer, point ) )
39 return;
40
41 // TODO: display a menu when several features identified
42
43 emit featureIdentified( results[0].mFeature );
45 emit featureIdentified( results[0].mFeature.id() );
47}
48
50{
51 if ( e->key() == Qt::Key_Escape )
52 {
53 mCanvas->unsetMapTool( this );
54 }
55}
Map canvas is a class for displaying all GIS data types on a canvas.
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
void featureIdentified(const QgsFeature &feature)
Emitted when a feature has been identified.
QgsMapToolIdentifyFeature(QgsMapCanvas *canvas, QgsVectorLayer *vl=nullptr)
QgsMapToolIdentifyFeature is a map tool to identify a feature on a chosen layer.
void keyPressEvent(QKeyEvent *e) override
Key event for overriding. Default implementation does nothing.
void canvasReleaseEvent(QgsMapMouseEvent *e) override
Mouse release event for overriding. Default implementation does nothing.
Map tool for identifying features in layers.
bool identifyVectorLayer(QList< QgsMapToolIdentify::IdentifyResult > *results, QgsVectorLayer *layer, const QgsPointXY &point, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
Performs the identification against a given vector layer.
QPointer< QgsMapCanvas > mCanvas
The pointer to the map canvas.
Definition qgsmaptool.h:341
QString mToolName
The translated name of the map tool.
Definition qgsmaptool.h:359
QCursor mCursor
The cursor used in the map tool.
Definition qgsmaptool.h:344
A class to represent a 2D point.
Definition qgspointxy.h:60
Represents a vector layer which manages a vector based data sets.
#define Q_NOWARN_DEPRECATED_POP
Definition qgis.h:6494
#define Q_NOWARN_DEPRECATED_PUSH
Definition qgis.h:6493