QGIS API Documentation 3.99.0-Master (a8f284845db)
Loading...
Searching...
No Matches
qgsmapcanvas.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmapcanvas.h - description
3 -------------------
4 begin : Sun Jun 30 2002
5 copyright : (C) 2002 by Gary E.Sherman
6 email : sherman at mrcc.com
7***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSMAPCANVAS_H
19#define QGSMAPCANVAS_H
20
21#include "qgsconfig.h"
22
23#include "qgis_gui.h"
24#include "qgis_sip.h"
26#include "qgsdistancearea.h"
28#include "qgsfeatureid.h"
29#include "qgsgeometry.h"
31#include "qgsmaprendererjob.h"
32#include "qgsmapsettings.h"
33#include "qgsprevieweffect.h"
34#include "qgsproject.h"
35#include "qgsrectangle.h"
36
37#include <QDomDocument>
38#include <QGestureEvent>
39#include <QGraphicsView>
40#include <QTimer>
41
42class QWheelEvent;
43class QPixmap;
44class QPaintEvent;
45class QKeyEvent;
46class ResizeEvent;
47
48class QColor;
49class QDomDocument;
50class QPaintDevice;
51class QMouseEvent;
52class QRubberBand;
53class QGraphicsScene;
54
55class QgsMapToPixel;
56class QgsMapLayer;
57class QgsHighlight;
58class QgsVectorLayer;
59
61
64class QgsMapSettings;
65class QgsMapCanvasMap;
67class QgsMapTool;
69class QgsRubberBand;
75class QgsStatusBar;
76
78class QgsScreenHelper;
79
81
82class QMenu;
84
85
90
91class GUI_EXPORT QgsMapCanvas : public QGraphicsView, public QgsExpressionContextGenerator
92{
93#ifdef SIP_RUN
95 if ( qobject_cast<QgsMapCanvas *>( sipCpp ) != nullptr )
96 sipType = sipType_QgsMapCanvas;
97 else
98 sipType = nullptr;
100#endif
101
102 Q_OBJECT
103 Q_PROPERTY( QString theme READ theme WRITE setTheme NOTIFY themeChanged )
105
106 public:
108 QgsMapCanvas( QWidget *parent SIP_TRANSFERTHIS = nullptr );
109
110 ~QgsMapCanvas() override;
111
122 void addOverlayWidget( QWidget *widget SIP_TRANSFER, Qt::Edge edge );
123
127 double magnificationFactor() const;
128
139 void setLayers( const QList<QgsMapLayer *> &layers );
140
147 void setFlags( Qgis::MapCanvasFlags flags );
148
155 Qgis::MapCanvasFlags flags() const;
156
158
163
171
179
187
192
196 void setMapSettingsFlags( Qgis::MapSettingsFlags flags );
197
205 const QgsLabelingResults *labelingResults( bool allowOutdatedResults = true ) const;
206
216 const QgsRenderedItemResults *renderedItemResults( bool allowOutdatedResults = true ) const;
217
225 void setCachingEnabled( bool enabled );
226
234 bool isCachingEnabled() const;
235
239 void clearCache();
240
250
255 void cancelJobs() SIP_SKIP;
256
265 void waitWhileRendering();
266
270 void setParallelRenderingEnabled( bool enabled );
271
275 bool isParallelRenderingEnabled() const;
276
280 void setMapUpdateInterval( int timeMilliseconds );
281
285 int mapUpdateInterval() const;
286
291 double scale() const;
292
294 double mapUnitsPerPixel() const;
295
297 QgsRectangle extent() const;
298
307 QgsRectangle fullExtent() const;
308
319
331 void setExtent( const QgsRectangle &r, bool magnified = false );
332
342
346 double rotation() const;
347
351 void setRotation( double degrees );
352
356 void setCenter( const QgsPointXY &center );
357
361 QgsPointXY center() const;
362
368 void zoomToFullExtent();
369
378 void zoomToProjectExtent();
379
382
384 void zoomToNextExtent();
385
387 void clearExtentHistory();
388
389
396
403 void panToFeatureIds( QgsVectorLayer *layer, const QgsFeatureIds &ids, bool alwaysRecenter = true );
404
406 void panToSelected( QgsMapLayer *layer = nullptr );
407
413 void panToSelected( const QList<QgsMapLayer *> &layers );
414
426 void flashFeatureIds( QgsVectorLayer *layer, const QgsFeatureIds &ids, const QColor &startColor = QColor( 255, 0, 0, 255 ), const QColor &endColor = QColor( 255, 0, 0, 0 ), int flashes = 3, int duration = 500 );
427
439 void flashGeometries( const QList<QgsGeometry> &geometries, const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem(), const QColor &startColor = QColor( 255, 0, 0, 255 ), const QColor &endColor = QColor( 255, 0, 0, 0 ), int flashes = 3, int duration = 500 );
440
442 void setMapTool( QgsMapTool *mapTool, bool clean = false );
443
452
454 QgsMapTool *mapTool() const;
455
462
470
472 void setCanvasColor( const QColor &_newVal );
474 QColor canvasColor() const;
475
479 void setSelectionColor( const QColor &color );
480
484 QColor selectionColor() const;
485
487 void updateScale();
488
490 QgsMapLayer *layer( int index );
491
502 QgsMapLayer *layer( const QString &id );
503
507 int layerCount() const;
508
517 QList<QgsMapLayer *> layers( bool expandGroupLayers = false ) const;
518
519#ifndef SIP_RUN
526 template<typename T>
527 QVector<T> layers() const { return mapSettings().layers<T>(); }
528#endif
529
541 void freeze( bool frozen = true );
542
552 bool isFrozen() const;
553
564 bool renderFlag() const { return mRenderFlag; }
565
570 Qgis::DistanceUnit mapUnits() const;
571
576 QMap<QString, QString> layerStyleOverrides() const;
577
588 void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
589
610 void setTheme( const QString &theme );
611
616 QString theme() const { return mTheme; }
617
619 const QgsMapToPixel *getCoordinateTransform();
620
622 bool isDrawing();
623
625 QgsMapLayer *currentLayer();
626
628 void setWheelFactor( double factor );
629
637 void zoomScale( double scale, bool ignoreScaleLock = false );
638
646 void zoomByFactor( double scaleFactor, const QgsPointXY *center = nullptr, bool ignoreScaleLock = false );
647
649 void zoomWithCenter( int x, int y, bool zoomIn );
650
655 void zoomToFeatureExtent( QgsRectangle &rect );
656
661 bool scaleLocked() const { return mScaleLocked; }
662
664 void enableAntiAliasing( bool flag );
665
667 bool antiAliasingEnabled() const;
668
670 void enableMapTileRendering( bool flag );
671
672 // following 2 methods should be moved elsewhere or changed to private
673 // currently used by pan map tool
675 void panActionEnd( QPoint releasePoint );
676
677#ifndef SIP_RUN
678
684 void panActionStart( QPoint releasePoint );
685#endif
686
688 void panAction( QMouseEvent *event );
689
691 QPoint mouseLastXY();
692
698 void setPreviewModeEnabled( bool previewEnabled );
699
706 bool previewModeEnabled() const;
707
716 void setPreviewMode( QgsPreviewEffect::PreviewMode mode );
717
725 QgsPreviewEffect::PreviewMode previewMode() const;
726
734 QgsSnappingUtils *snappingUtils() const;
735
743 void setSnappingUtils( QgsSnappingUtils *utils );
744
754 void setExpressionContextScope( const QgsExpressionContextScope &scope ) { mExpressionContextScope = scope; }
755
763 QgsExpressionContextScope &expressionContextScope() { return mExpressionContextScope; }
764
772 {
773 return mExpressionContextScope;
774 }
775
782 QgsExpressionContextScope *defaultExpressionContextScope() const SIP_FACTORY;
783
784 QgsExpressionContext createExpressionContext() const override;
785
790 void setSegmentationTolerance( double tolerance );
791
796 void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type );
797
801 QList<QgsMapCanvasAnnotationItem *> annotationItems() const;
802
807 bool annotationsVisible() const { return mAnnotationsVisible; }
808
813 void setAnnotationsVisible( bool visible );
814
818 void setLabelingEngineSettings( const QgsLabelingEngineSettings &settings );
819
823 const QgsLabelingEngineSettings &labelingEngineSettings() const;
824
830 void setSelectiveMaskingSourceSets( const QVector< QgsSelectiveMaskingSourceSet > &sets );
831
839 bool previewJobsEnabled() const;
840
848 void setPreviewJobsEnabled( bool enabled );
849
855 void setCustomDropHandlers( const QVector<QPointer<QgsCustomDropHandler>> &handlers ) SIP_SKIP;
856
867 void setTemporalRange( const QgsDateTimeRange &range );
868
875 const QgsDateTimeRange &temporalRange() const;
876
888 void installInteractionBlocker( QgsMapCanvasInteractionBlocker *blocker );
889
897 void removeInteractionBlocker( QgsMapCanvasInteractionBlocker *blocker );
898
904 bool allowInteraction( QgsMapCanvasInteractionBlocker::Interaction interaction ) const;
905
913 void setMapController( QgsAbstract2DMapController *controller SIP_TRANSFER );
914
923 QgsStatusBar *statusBar();
924
931 void setStatusBar( QgsStatusBar *bar );
932
933 public slots:
934
936 void refresh();
937
946 void refreshAllLayers();
947
956 void redrawAllLayers();
957
959 void selectionChangedSlot();
960
962 void saveAsImage( const QString &fileName, QPixmap *QPixmap = nullptr, const QString & = "PNG" );
963
965 void layerStateChange();
966
976 void setRenderFlag( bool flag );
977
981 void stopRendering();
982
984 void readProject( const QDomDocument & );
985
987 void writeProject( QDomDocument & );
988
996 void setMagnificationFactor( double factor, const QgsPointXY *center = nullptr );
997
1002 void setScaleLocked( bool isLocked );
1003
1005 void zoomIn();
1006
1008 void zoomOut();
1009
1014 void zoomToSelected( QgsMapLayer *layer = nullptr );
1015
1021 void zoomToSelected( const QList<QgsMapLayer *> &layers );
1022
1028 void setZoomResolutions( const QList<double> &resolutions ) { mZoomResolutions = resolutions; }
1029
1033 double zoomInFactor() const;
1034
1038 double zoomOutFactor() const;
1039
1046 const QList<double> &zoomResolutions() const { return mZoomResolutions; }
1047
1056 QgsDoubleRange zRange() const;
1057
1066 void setZRange( const QgsDoubleRange &range );
1067
1068 private slots:
1070 void mapToolDestroyed();
1071
1073 void rendererJobFinished();
1074
1076 void previewJobFinished();
1077
1078 void mapUpdateTimeout();
1079
1080 void refreshMap();
1081
1082 void mapThemeChanged( const QString &theme );
1084 void mapThemeRenamed( const QString &theme, const QString &newTheme );
1085
1086 void updateDevicePixelFromScreen();
1087
1088 void onElevationShadingRendererChanged();
1089
1090 signals:
1091
1096 void xyCoordinates( const QgsPointXY &p );
1097
1099 void scaleChanged( double scale );
1100
1107 void scaleLockChanged( bool locked );
1108
1109
1112
1117
1121 void magnificationChanged( double magnification );
1122
1127
1128 // TODO: deprecate when decorations are reimplemented as map canvas items
1129
1140 void renderComplete( QPainter *painter );
1141
1142 // ### QGIS 3: renamte to mapRefreshFinished()
1145
1146 // ### QGIS 3: rename to mapRefreshStarted()
1149
1155
1158
1160 void keyPressed( QKeyEvent *e );
1161
1163 void keyReleased( QKeyEvent *e );
1164
1168 void mapToolSet( QgsMapTool *newTool, QgsMapTool *oldTool );
1169
1176
1178 void zoomLastStatusChanged( bool available );
1179
1181 void zoomNextStatusChanged( bool available );
1182
1187
1192
1197
1202
1207 void themeChanged( const QString &theme );
1208
1210 void messageEmitted( const QString &title, const QString &message, Qgis::MessageLevel level = Qgis::MessageLevel::Info );
1211
1219 void renderErrorOccurred( const QString &error, QgsMapLayer *layer );
1220
1231 void panDistanceBearingChanged( double distance, Qgis::DistanceUnit unit, double bearing );
1232
1237 void tapAndHoldGestureOccurred( const QgsPointXY &mapPoint, QTapAndHoldGesture *gesture );
1238
1245
1255
1263
1264 protected:
1265 bool event( QEvent *e ) override;
1266 void keyPressEvent( QKeyEvent *e ) override;
1267 void keyReleaseEvent( QKeyEvent *e ) override;
1268 void mouseDoubleClickEvent( QMouseEvent *e ) override;
1269 void mouseMoveEvent( QMouseEvent *e ) override;
1270 void mousePressEvent( QMouseEvent *e ) override;
1271 void mouseReleaseEvent( QMouseEvent *e ) override;
1272 void wheelEvent( QWheelEvent *e ) override;
1273 void resizeEvent( QResizeEvent *e ) override;
1274 void paintEvent( QPaintEvent *e ) override;
1275 void dragEnterEvent( QDragEnterEvent *e ) override;
1276 bool viewportEvent( QEvent *event ) override;
1277
1279 void moveCanvasContents( bool reset = false );
1280
1281 void dropEvent( QDropEvent *event ) override;
1282
1283 void showEvent( QShowEvent *event ) override;
1284
1290 void emitExtentsChanged();
1291
1293 class CanvasProperties;
1294
1296 std::unique_ptr<CanvasProperties> mCanvasProperties;
1297
1298#if 0
1299
1304 void connectNotify( const char *signal ) override;
1305#endif
1306
1307 protected slots:
1310
1311 private slots:
1312
1313 void layerRepaintRequested( bool deferred );
1314
1315 void autoRefreshTriggered();
1316
1317 void updateAutoRefreshTimer();
1318
1319 void projectThemesChanged();
1320
1321 void startPreviewJob( int number );
1322
1323 void temporalControllerModeChanged();
1324
1325 private:
1326 // Restore scale RAII
1327 class ScaleRestorer
1328 {
1329 public:
1330 ScaleRestorer( QgsMapCanvas *canvas )
1331 : mCanvas( canvas )
1332 {
1333 mLockedScale = mCanvas->mapSettings().scale();
1334 };
1335
1336 ~ScaleRestorer()
1337 {
1338 QgsRectangle newExtent = mCanvas->mapSettings().extent();
1339 newExtent.scale( mLockedScale / mCanvas->mapSettings().scale() );
1340 mCanvas->mSettings.setExtent( newExtent );
1341 };
1342
1343 private:
1344 QgsMapCanvas *mCanvas;
1345 double mLockedScale;
1346 };
1347
1348 enum class CacheInvalidationType
1349 {
1350 Temporal = 1 << 0,
1351 Elevation = 1 << 1,
1352 };
1353
1354 QgsOverlayWidgetLayout *mLayout = nullptr;
1355
1356 Qgis::MapCanvasFlags mFlags;
1357
1359 QgsMapSettings mSettings;
1360
1362 QgsMapCanvasMap *mMap = nullptr;
1363
1364 QgsScreenHelper *mScreenHelper = nullptr;
1365
1370 QgsTemporalController *mController = nullptr;
1371
1373 bool mFrozen = false;
1374
1376 bool mRefreshScheduled = false;
1377
1379 bool mRefreshAfterJob = false;
1380
1382 bool mRenderFlag = true;
1383
1384 QFlags<CacheInvalidationType> mCacheInvalidations;
1385
1387 QPointer<QgsMapLayer> mCurrentLayer;
1388
1390 QGraphicsScene *mScene = nullptr;
1391
1393 QgsMapTool *mMapTool = nullptr;
1394
1396 QgsProject *mProject = nullptr;
1397
1399 QList<QgsRectangle> mLastExtent;
1400 int mLastExtentIndex = -1;
1401
1403 double mWheelZoomFactor = 2.0;
1404
1406 QTimer mMapUpdateTimer;
1407
1409 QgsMapRendererQImageJob *mJob = nullptr;
1410
1412 bool mJobCanceled = false;
1413
1415 std::unique_ptr<QgsLabelingResults> mLabelingResults;
1416
1418 bool mLabelingResultsOutdated = false;
1419
1424 std::unique_ptr<QgsRenderedItemResults> mRenderedItemResults;
1425
1430 std::unique_ptr<QgsRenderedItemResults> mPreviousRenderedItemResults;
1431
1437 bool mRenderedItemResultsOutdated = false;
1438
1440 bool mUseParallelRendering = false;
1441
1443 bool mDrawRenderingStats = false;
1444
1446 QgsMapRendererCache *mCache = nullptr;
1447
1448 QTimer *mResizeTimer = nullptr;
1449 QTimer *mRefreshTimer = nullptr;
1450
1451 QgsPreviewEffect *mPreviewEffect = nullptr;
1452
1453 QgsRectangle imageRect( const QImage &img, const QgsMapSettings &mapSettings );
1454
1455 QgsSnappingUtils *mSnappingUtils = nullptr;
1456
1457 QList<QgsMapRendererQImageJob *> mPreviewJobs;
1458
1460 bool mScaleLocked = false;
1461
1462 QgsExpressionContextScope mExpressionContextScope;
1463
1465 QRect mZoomRect;
1466
1468 bool mZoomDragging = false;
1469
1471 std::unique_ptr<QgsRubberBand> mZoomRubberBand;
1472
1473 QCursor mZoomCursor;
1474
1475 QTimer mAutoRefreshTimer;
1476
1477 QTimer mPreviewTimer;
1478 QMetaObject::Connection mPreviewTimerConnection;
1479
1480 QString mTheme;
1481
1482 QgsPointXY mCursorPoint;
1483
1484 bool mAnnotationsVisible = true;
1485
1486 bool mUsePreviewJobs = false;
1487
1488 QHash<QString, int> mLastLayerRenderTime;
1489
1490 QVector<QPointer<QgsCustomDropHandler>> mDropHandlers;
1491
1492 QgsDistanceArea mDa;
1493 QList<double> mZoomResolutions;
1494
1495 QList<QgsMapCanvasInteractionBlocker *> mInteractionBlockers;
1496
1497 int mBlockItemPositionUpdates = 0;
1498 int mBlockExtentChangedSignal = 0;
1499 int mBlockScaleChangedSignal = 0;
1500
1501 std::unique_ptr<QgsTemporaryCursorOverride> mTemporaryCursorOverride;
1502
1510 QMap<QString, QDateTime> mRendererErrors;
1511
1512
1513 QPointer<QgsAbstract2DMapController> mMapController;
1514
1515 QPointer< QgsStatusBar > mStatusBar;
1516
1521 QgsPointXY cursorPoint() const;
1522
1526 void updateMapSize();
1527
1532 void beginZoomRect( QPoint pos );
1533
1538 void endZoomRect( QPoint pos );
1539
1541 void stopZoomRect();
1542
1544 void startPan();
1545
1547 void stopPan();
1548
1557 bool boundingBoxOfFeatureIds( const QgsFeatureIds &ids, QgsVectorLayer *layer, QgsRectangle &bbox, QString &errorMsg ) const;
1558
1565 QgsRectangle optimalExtentForPointLayer( QgsVectorLayer *layer, const QgsPointXY &center, int scaleFactor = 5 );
1566
1567 void setLayersPrivate( const QList<QgsMapLayer *> &layers );
1568
1569 void startPreviewJobs();
1570 void stopPreviewJobs();
1571 void schedulePreviewJob( int number );
1572
1576 bool panOperationInProgress();
1577
1578 int nextZoomLevel( const QList<double> &resolutions, bool zoomIn = true ) const;
1579
1584 void clearTemporalCache();
1585
1589 void clearElevationCache();
1590
1591 void showContextMenu( QgsMapMouseEvent *event );
1592
1597 void notifyRendererErrors( const QgsMapRendererJob::Errors &errors );
1598
1599 friend class TestQgsMapCanvas;
1600
1601}; // class QgsMapCanvas
1602
1603// clazy:excludeall=qstring-allocations
1604
1605#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:59
DistanceUnit
Units of distance.
Definition qgis.h:5135
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Definition qgis.h:158
@ Info
Information message.
Definition qgis.h:159
QFlags< MapCanvasFlag > MapCanvasFlags
Flags controlling behavior of map canvases.
Definition qgis.h:3554
Abstract base class for all 2D map controllers.
Abstract base class for all geometries.
Represents a coordinate reference system (CRS).
Custom exception class for Coordinate Reference System related exceptions.
QgsRange which stores a range of double values.
Definition qgsrange.h:236
Abstract interface for generating an expression context.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A geometry is the spatial representation of a feature.
Highlights features on the map.
Stores global configuration for labeling engine.
Stores computed placement from labeling engine.
An interactive map canvas item which displays a QgsAnnotation.
An interface for objects which block interactions with a QgsMapCanvas.
Interaction
Available interactions to block.
Deprecated to be deleted, stuff from here should be moved elsewhere.
void setCurrentLayer(QgsMapLayer *layer)
void contextMenuAboutToShow(QMenu *menu, QgsMapMouseEvent *event)
Emitted before the map canvas context menu will be shown.
void zoomToProjectExtent()
Zoom to the full extent the project associated with this canvas.
void panToSelected(QgsMapLayer *layer=nullptr)
Pan to the selected features of current ayer keeping same extent.
bool isCachingEnabled() const
Check whether images of rendered layers are curerently being cached.
void zoomToFullExtent()
Zoom to the full extent of all layers currently visible in the canvas.
void setLayers(const QList< QgsMapLayer * > &layers)
Sets the list of layers that should be shown in the canvas.
void setProject(QgsProject *project)
Sets the project linked to this canvas.
const QgsRenderedItemResults * renderedItemResults(bool allowOutdatedResults=true) const
Gets access to the rendered item results (may be nullptr), which includes the results of rendering an...
QColor selectionColor() const
Returns color for selected features.
bool event(QEvent *e) override
void setCachingEnabled(bool enabled)
Set whether to cache images of rendered layers.
void mouseReleaseEvent(QMouseEvent *e) override
void setExtent(const QgsRectangle &r, bool magnified=false)
Sets the extent of the map canvas to the specified rectangle.
void selectionChanged(QgsMapLayer *layer)
Emitted when selection in any layer gets changed.
void updateCanvasItemPositions()
called on resize or changed extent to notify canvas items to change their rectangle
void extentsChanged()
Emitted when the extents of the map change.
void xyCoordinates(const QgsPointXY &p)
Emits current mouse position.
QgsExpressionContextScope & expressionContextScope()
Returns a reference to the expression context scope for the map canvas.
void setFlags(Qgis::MapCanvasFlags flags)
Sets flags which control how the map canvas behaves.
bool previewJobsEnabled
QgsPointXY center() const
Gets map center, in geographical coordinates.
void setZoomResolutions(const QList< double > &resolutions)
Set a list of resolutions (map units per pixel) to which to "snap to" when zooming the map.
void showEvent(QShowEvent *event) override
int layerCount() const
Returns number of layers on the map.
void emitExtentsChanged()
Emits the extentsChanged signal when appropriate.
QString theme() const
Returns the map's theme shown in the canvas, if set.
QVector< T > layers() const
Returns a list of registered map layers with a specified layer type.
void clearCache()
Make sure to remove any rendered images from cache (does nothing if cache is not enabled).
void tapAndHoldGestureOccurred(const QgsPointXY &mapPoint, QTapAndHoldGesture *gesture)
Emitted whenever a tap and hold gesture occurs at the specified map point.
void setCanvasColor(const QColor &_newVal)
Write property of QColor bgColor.
const QList< double > & zoomResolutions() const
Returns the list of resolutions to which to "snap to" when zooming the map.
void panDistanceBearingChanged(double distance, Qgis::DistanceUnit unit, double bearing)
Emitted whenever the distance or bearing of an in-progress panning operation is changed.
const QgsTemporalController * temporalController() const
Gets access to the temporal controller that will be used to update the canvas temporal range.
void flashGeometries(const QList< QgsGeometry > &geometries, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem(), const QColor &startColor=QColor(255, 0, 0, 255), const QColor &endColor=QColor(255, 0, 0, 0), int flashes=3, int duration=500)
Causes a set of geometries to flash within the canvas.
void setMapUpdateInterval(int timeMilliseconds)
Set how often map preview should be updated while it is being rendered (in milliseconds).
bool scaleLocked() const
Returns whether the scale is locked, so zooming can be performed using magnication.
bool setReferencedExtent(const QgsReferencedRectangle &extent)
Sets the canvas to the specified extent.
void dragEnterEvent(QDragEnterEvent *e) override
QgsMapRendererCache * cache()
Returns the map renderer cache, if caching is enabled.
void zRangeChanged()
Emitted when the map canvas z (elevation) range changes.
void keyPressEvent(QKeyEvent *e) override
void clearExtentHistory()
Clears the list of extents and sets current extent as first item.
void zoomToPreviousExtent()
Zoom to the previous extent (view).
friend class TestQgsMapCanvas
QList< QgsMapLayer * > layers(bool expandGroupLayers=false) const
Returns the list of layers shown within the map canvas.
void scaleChanged(double scale)
Emitted when the scale of the map changes.
void mapToolSet(QgsMapTool *newTool, QgsMapTool *oldTool)
Emit map tool changed with the old tool.
void canvasColorChanged()
Emitted when canvas background color changes.
void moveCanvasContents(bool reset=false)
called when panning is in action, reset indicates end of panning
void magnificationChanged(double magnification)
Emitted when the scale of the map changes.
void currentLayerChanged(QgsMapLayer *layer)
Emitted when the current layer is changed.
void setTemporalController(QgsTemporalController *controller)
Sets the temporal controller for this canvas.
void renderErrorOccurred(const QString &error, QgsMapLayer *layer)
Emitted whenever an error is encountered during a map render operation.
void addOverlayWidget(QWidget *widget, Qt::Edge edge)
Adds an overlay widget to the layout, which will be bound to the specified edge.
void waitWhileRendering()
Blocks until the rendering job has finished.
void mapRefreshCanceled()
Emitted when the pending map refresh has been canceled.
double magnificationFactor() const
Returns the magnification factor.
void mousePressEvent(QMouseEvent *e) override
void updateScale()
Emits signal scaleChanged to update scale in main window.
void unsetMapTool(QgsMapTool *mapTool)
Unset the current map tool or last non zoom tool.
void resizeEvent(QResizeEvent *e) override
void renderStarting()
Emitted when the canvas is about to be rendered.
void setMapSettingsFlags(Qgis::MapSettingsFlags flags)
Resets the flags for the canvas' map settings.
std::unique_ptr< CanvasProperties > mCanvasProperties
Handle pattern for implementation object.
void keyReleased(QKeyEvent *e)
Emit key release event.
QgsMapTool * mapTool() const
Returns the currently active tool.
const QgsExpressionContextScope & expressionContextScope() const
Returns a const reference to the expression context scope for the map canvas.
void layerStyleOverridesChanged()
Emitted when the configuration of overridden layer styles changes.
QgsMapCanvas(QWidget *parent=nullptr)
Constructor.
void zoomNextStatusChanged(bool available)
Emitted when zoom next status changed.
void setPreviewJobsEnabled(bool enabled)
Sets whether canvas map preview jobs (low priority render jobs which render portions of the view just...
QgsRectangle fullExtent() const
Returns the combined extent for all layers on the map canvas.
void keyReleaseEvent(QKeyEvent *e) override
void rotationChanged(double rotation)
Emitted when the rotation of the map changes.
void panToFeatureIds(QgsVectorLayer *layer, const QgsFeatureIds &ids, bool alwaysRecenter=true)
Centers canvas extent to feature ids.
void messageEmitted(const QString &title, const QString &message, Qgis::MessageLevel level=Qgis::MessageLevel::Info)
emit a message (usually to be displayed in a message bar)
void scaleLockChanged(bool locked)
Emitted when the scale locked state of the map changes.
const QgsLabelingResults * labelingResults(bool allowOutdatedResults=true) const
Gets access to the labeling results (may be nullptr).
void mouseMoveEvent(QMouseEvent *e) override
bool renderFlag() const
Returns true if canvas render is disabled as a result of user disabling renders via the GUI.
QgsRectangle projectExtent() const
Returns the associated project's full extent, in the canvas' CRS.
void setCenter(const QgsPointXY &center)
Set the center of the map canvas, in geographical coordinates.
void setParallelRenderingEnabled(bool enabled)
Set whether the layers are rendered in parallel or sequentially.
void setDestinationCrs(const QgsCoordinateReferenceSystem &crs)
Sets destination coordinate reference system.
void flashFeatureIds(QgsVectorLayer *layer, const QgsFeatureIds &ids, const QColor &startColor=QColor(255, 0, 0, 255), const QColor &endColor=QColor(255, 0, 0, 0), int flashes=3, int duration=500)
Causes a set of features with matching ids from a vector layer to flash within the canvas.
bool isParallelRenderingEnabled() const
Check whether the layers are rendered in parallel or sequentially.
double scale() const
Returns the last reported scale of the canvas.
double rotation() const
Gets the current map canvas rotation in clockwise degrees.
void temporalRangeChanged()
Emitted when the map canvas temporal range changes.
void paintEvent(QPaintEvent *e) override
void zoomLastStatusChanged(bool available)
Emitted when zoom last status changed.
void themeChanged(const QString &theme)
Emitted when the canvas has been assigned a different map theme.
void destinationCrsChanged()
Emitted when map CRS has changed.
void transformContextChanged()
Emitted when the canvas transform context is changed.
void keyPressed(QKeyEvent *e)
Emit key press event.
void setMapTool(QgsMapTool *mapTool, bool clean=false)
Sets the map tool currently being used on the canvas.
QColor canvasColor() const
Read property of QColor bgColor.
void mapCanvasRefreshed()
Emitted when canvas finished a refresh request.
int mapUpdateInterval() const
Find out how often map preview should be updated while it is being rendered (in milliseconds).
void setSelectionColor(const QColor &color)
Set color of selected vector features.
double mapUnitsPerPixel() const
Returns the mapUnitsPerPixel (map units per pixel) for the canvas.
void mouseDoubleClickEvent(QMouseEvent *e) override
bool viewportEvent(QEvent *event) override
void zoomToNextExtent()
Zoom to the next extent (view).
void layersChanged()
Emitted when a new set of layers has been received.
void zoomToFeatureIds(QgsVectorLayer *layer, const QgsFeatureIds &ids)
Set canvas extent to the bounding box of a set of features.
void renderComplete(QPainter *painter)
Emitted when the canvas has rendered.
QgsMapLayer * layer(int index)
Returns the map layer at position index in the layer stack.
bool annotationsVisible() const
Returns true if annotations are visible within the map canvas.
void cancelJobs()
Cancel any rendering job, in a blocking way.
Qgis::MapCanvasFlags flags() const
Returns flags which control how the map canvas behaves.
void wheelEvent(QWheelEvent *e) override
void dropEvent(QDropEvent *event) override
QgsProject * project()
Returns the project linked to this canvas.
void setRotation(double degrees)
Set the rotation of the map canvas in clockwise degrees.
void setTheme(const QString &theme)
Sets a map theme to show in the canvas.
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
QgsRectangle extent() const
Returns the current zoom extent of the map canvas.
void setExpressionContextScope(const QgsExpressionContextScope &scope)
Sets an expression context scope for the map canvas.
Base class for all map layer types.
Definition qgsmaplayer.h:83
A mouse event which is the result of a user interaction with a QgsMapCanvas.
A widget that displays an overview map.
Responsible for keeping a cache of rendered images resulting from a map rendering job.
QList< QgsMapRendererJob::Error > Errors
Intermediate base class adding functionality that allows a client to query the rendered image.
Contains configuration for rendering maps.
Perform transforms between map coordinates and device coordinates.
Abstract base class for all map tools.
Definition qgsmaptool.h:72
A custom layout which can be used to overlay child widgets over a parent widget.
Represents a 2D point.
Definition qgspointxy.h:62
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:113
A rectangle specified with double values.
void scale(double scaleFactor, const QgsPointXY *c=nullptr)
Scale the rectangle around its center point.
A QgsRectangle with associated coordinate reference system.
Stores collated details of rendered items during a map rendering operation.
Responsible for drawing transient features (e.g.
A utility class for dynamic handling of changes to screen properties.
Contains configuration of snapping and can return answers to snapping queries.
A proxy widget for QStatusBar.
A controller base class for temporal objects, contains a signal for notifying updates of the objects ...
Temporarily sets a cursor override for the QApplication for the lifetime of the object.
Represents a vector layer which manages a vector based dataset.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition qgis_sip.h:198
#define SIP_KEEPREFERENCE
Definition qgis_sip.h:93
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:52
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83
#define SIP_THROW(name,...)
Definition qgis_sip.h:210
#define SIP_END
Definition qgis_sip.h:215
QSet< QgsFeatureId > QgsFeatureIds
QgsTemporalRange< QDateTime > QgsDateTimeRange
QgsRange which stores a range of date times.
Definition qgsrange.h:764