QGIS API Documentation 3.43.0-Master (c67cf405802)
qgsmaptip.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaptip.h - Query a layer and show a maptip on the canvas
3 ---------------------
4 begin : October 2007
5 copyright : (C) 2007 by Gary Sherman
6 email : sherman @ mrcc dot 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#ifndef QGSMAPTIP_H
16#define QGSMAPTIP_H
17
18class QgsMapLayer;
19class QgsMapCanvas;
20class QPoint;
21class QString;
22class QgsPointXY;
23class QgsVectorLayer;
24class QgsWebView;
25
26#include <QWidget>
27#include <QUrl>
28#include <QTimer>
29#include "qgsfeature.h"
30#include "qgis_gui.h"
31
51class GUI_EXPORT QgsMapTip : public QWidget
52{
53 Q_OBJECT
54 public:
58 QgsMapTip();
59
70 void showMapTip( QgsMapLayer *thepLayer, QgsPointXY &mapPosition, const QPoint &pixelPosition, QgsMapCanvas *mpMapCanvas );
71
77 void clear( QgsMapCanvas *mpMapCanvas = nullptr, int msDelay = 0 );
78
84 static QString vectorMapTipPreviewText( QgsMapLayer *layer, QgsMapCanvas *mapCanvas, const QString &mapTemplate, const QString &displayExpression );
85
91 static QString rasterMapTipPreviewText( QgsMapLayer *layer, QgsMapCanvas *mapCanvas, const QString &mapTemplate );
92
93 private slots:
94 void onLinkClicked( const QUrl &url );
95 void resizeAndMoveToolTip();
96
97 private:
98 // Fetch the feature to use for the maptip text.
99 // Only the first feature in the search radius is used
100 QString fetchFeature( QgsMapLayer *thepLayer, QgsPointXY &mapPosition, QgsMapCanvas *mapCanvas );
101
102 // Sample the raster and get the maptip text
103 QString fetchRaster( QgsMapLayer *layer, QgsPointXY &mapPosition, QgsMapCanvas *mapCanvas );
104
105 // Insert the raw map tip text into an HTML template and return the result
106 static QString htmlText( const QString &text, int maxWidth = -1 );
107
108 // Flag to indicate if a maptip is currently being displayed
109 bool mMapTipVisible;
110
111 QgsWebView *mWebView = nullptr;
112
113 static const int MARGIN_VALUE = 5;
114
115 QTimer mDelayedClearTimer;
116
117 // Template for the actual HTML content that will be displayed in QgsWebView
118 static const QString sMapTipTemplate;
119
120 QPoint mPosition;
121 const QgsMapCanvas *mMapCanvas = nullptr;
122};
123#endif // QGSMAPTIP_H
Map canvas is a class for displaying all GIS data types on a canvas.
Base class for all map layer types.
Definition qgsmaplayer.h:77
Displays a tool tip on a map canvas when the mouse is hovered over a feature.
Definition qgsmaptip.h:52
Represents a 2D point.
Definition qgspointxy.h:60
Represents a vector layer which manages a vector based dataset.
A collection of stubs to mimic the API of QWebView on systems where the real library is not available...
Definition qgswebview.h:66