QGIS API Documentation 4.1.0-Master (31622b25bb0)
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;
60class QgsVectorLayer;
61
63
66class QgsMapSettings;
67class QgsMapCanvasMap;
69class QgsMapTool;
70class QgsMessageBar;
72class QgsRubberBand;
78class QgsStatusBar;
80
82class QgsScreenHelper;
83
85
86class QMenu;
88
89
94
95class GUI_EXPORT QgsMapCanvas : public QGraphicsView, public QgsExpressionContextGenerator
96{
97#ifdef SIP_RUN
99 if ( qobject_cast<QgsMapCanvas *>( sipCpp ) != nullptr )
100 sipType = sipType_QgsMapCanvas;
101 else
102 sipType = nullptr;
103 SIP_END
104#endif
105
106 Q_OBJECT
107 Q_PROPERTY( QString theme READ theme WRITE setTheme NOTIFY themeChanged )
109
110 public:
113
115 QgsMapCanvas( QWidget *parent SIP_TRANSFERTHIS = nullptr );
116
117 ~QgsMapCanvas() override;
118
129 void addOverlayWidget( QWidget *widget SIP_TRANSFER, Qt::Edge edge );
130
134 double magnificationFactor() const;
135
146 void setLayers( const QList<QgsMapLayer *> &layers );
147
154 void setFlags( Qgis::MapCanvasFlags flags );
155
162 Qgis::MapCanvasFlags flags() const;
163
165
170
178
186
194
199
203 void setMapSettingsFlags( Qgis::MapSettingsFlags flags );
204
212 const QgsLabelingResults *labelingResults( bool allowOutdatedResults = true ) const;
213
223 const QgsRenderedItemResults *renderedItemResults( bool allowOutdatedResults = true ) const;
224
232 void setCachingEnabled( bool enabled );
233
241 bool isCachingEnabled() const;
242
246 void clearCache();
247
257
262 void cancelJobs() SIP_SKIP;
263
272 void waitWhileRendering();
273
277 void setParallelRenderingEnabled( bool enabled );
278
282 bool isParallelRenderingEnabled() const;
283
287 void setMapUpdateInterval( int timeMilliseconds );
288
292 int mapUpdateInterval() const;
293
298 double scale() const;
299
301 double mapUnitsPerPixel() const;
302
304 QgsRectangle extent() const;
305
314 QgsRectangle fullExtent() const;
315
326
338 void setExtent( const QgsRectangle &r, bool magnified = false );
339
349
353 double rotation() const;
354
358 void setRotation( double degrees );
359
363 void setCenter( const QgsPointXY &center );
364
368 QgsPointXY center() const;
369
375 void zoomToFullExtent();
376
385 void zoomToProjectExtent();
386
389
391 void zoomToNextExtent();
392
394 void clearExtentHistory();
395
396
403
410 void panToFeatureIds( QgsVectorLayer *layer, const QgsFeatureIds &ids, bool alwaysRecenter = true );
411
413 void panToSelected( QgsMapLayer *layer = nullptr );
414
420 void panToSelected( const QList<QgsMapLayer *> &layers );
421
433 void flashFeatureIds(
434 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
435 );
436
448 void flashGeometries(
449 const QList<QgsGeometry> &geometries,
451 const QColor &startColor = QColor( 255, 0, 0, 255 ),
452 const QColor &endColor = QColor( 255, 0, 0, 0 ),
453 int flashes = 3,
454 int duration = 500
455 );
456
458 void setMapTool( QgsMapTool *mapTool, bool clean = false );
459
468
470 QgsMapTool *mapTool() const;
471
478
486
488 void setCanvasColor( const QColor &_newVal );
490 QColor canvasColor() const;
491
495 void setSelectionColor( const QColor &color );
496
500 QColor selectionColor() const;
501
503 void updateScale();
504
506 QgsMapLayer *layer( int index );
507
518 QgsMapLayer *layer( const QString &id );
519
523 int layerCount() const;
524
533 QList<QgsMapLayer *> layers( bool expandGroupLayers = false ) const;
534
535#ifndef SIP_RUN
542 template<typename T> QVector<T> layers() const { return mapSettings().layers<T>(); }
543#endif
544
556 void freeze( bool frozen = true );
557
567 bool isFrozen() const;
568
579 bool renderFlag() const { return mRenderFlag; }
580
585 Qgis::DistanceUnit mapUnits() const;
586
591 QMap<QString, QString> layerStyleOverrides() const;
592
603 void setLayerStyleOverrides( const QMap<QString, QString> &overrides );
604
625 void setTheme( const QString &theme );
626
631 QString theme() const { return mTheme; }
632
634 const QgsMapToPixel *getCoordinateTransform();
635
637 bool isDrawing();
638
640 QgsMapLayer *currentLayer();
641
643 void setWheelFactor( double factor );
644
652 void zoomScale( double scale, bool ignoreScaleLock = false );
653
661 void zoomByFactor( double scaleFactor, const QgsPointXY *center = nullptr, bool ignoreScaleLock = false );
662
664 void zoomWithCenter( int x, int y, bool zoomIn );
665
670 void zoomToFeatureExtent( QgsRectangle &rect );
671
676 bool scaleLocked() const { return mScaleLocked; }
677
679 void enableAntiAliasing( bool flag );
680
682 bool antiAliasingEnabled() const;
683
685 void enableMapTileRendering( bool flag );
686
687 // following 2 methods should be moved elsewhere or changed to private
688 // currently used by pan map tool
690 void panActionEnd( QPoint releasePoint );
691
692#ifndef SIP_RUN
693
699 void panActionStart( QPoint releasePoint );
700#endif
701
703 void panAction( QMouseEvent *event );
704
706 QPoint mouseLastXY();
707
713 void setPreviewModeEnabled( bool previewEnabled );
714
721 bool previewModeEnabled() const;
722
731 void setPreviewMode( QgsPreviewEffect::PreviewMode mode );
732
740 QgsPreviewEffect::PreviewMode previewMode() const;
741
749 QgsSnappingUtils *snappingUtils() const;
750
758 void setSnappingUtils( QgsSnappingUtils *utils );
759
769 void setExpressionContextScope( const QgsExpressionContextScope &scope ) { mExpressionContextScope = scope; }
770
778 QgsExpressionContextScope &expressionContextScope() { return mExpressionContextScope; }
779
786 const QgsExpressionContextScope &expressionContextScope() const SIP_SKIP { return mExpressionContextScope; }
787
794 QgsExpressionContextScope *defaultExpressionContextScope() const SIP_FACTORY;
795
796 QgsExpressionContext createExpressionContext() const override;
797
802 void setSegmentationTolerance( double tolerance );
803
808 void setSegmentationToleranceType( QgsAbstractGeometry::SegmentationToleranceType type );
809
813 QList<QgsMapCanvasAnnotationItem *> annotationItems() const;
814
819 bool annotationsVisible() const { return mAnnotationsVisible; }
820
825 void setAnnotationsVisible( bool visible );
826
830 void setLabelingEngineSettings( const QgsLabelingEngineSettings &settings );
831
835 const QgsLabelingEngineSettings &labelingEngineSettings() const;
836
842 void setSelectiveMaskingSourceSets( const QVector< QgsSelectiveMaskingSourceSet > &sets );
843
851 bool previewJobsEnabled() const;
852
860 void setPreviewJobsEnabled( bool enabled );
861
867 void setCustomDropHandlers( const QVector<QPointer<QgsCustomDropHandler>> &handlers ) SIP_SKIP;
868
879 void setTemporalRange( const QgsDateTimeRange &range );
880
887 const QgsDateTimeRange &temporalRange() const;
888
900 void installInteractionBlocker( QgsMapCanvasInteractionBlocker *blocker );
901
909 void removeInteractionBlocker( QgsMapCanvasInteractionBlocker *blocker );
910
916 bool allowInteraction( QgsMapCanvasInteractionBlocker::Interaction interaction ) const;
917
925 void setMapController( QgsAbstract2DMapController *controller SIP_TRANSFER );
926
935 QgsStatusBar *statusBar();
936
943 void setStatusBar( QgsStatusBar *bar );
944
954 void setMessageBar( QgsMessageBar *bar );
955
964 QgsMessageBar *messageBar();
965
974 void setUserInputWidget( QgsUserInputWidget *userInputWidget );
975
976
985 QgsUserInputWidget *userInputWidget();
986
988
989 public slots:
990
992 void refresh();
993
1002 void refreshAllLayers();
1003
1012 void redrawAllLayers();
1013
1015 void selectionChangedSlot();
1016
1018 void saveAsImage( const QString &fileName, QPixmap *QPixmap = nullptr, const QString & = "PNG" );
1019
1021 void layerStateChange();
1022
1032 void setRenderFlag( bool flag );
1033
1037 void stopRendering();
1038
1040 void readProject( const QDomDocument & );
1041
1043 void writeProject( QDomDocument & );
1044
1052 void setMagnificationFactor( double factor, const QgsPointXY *center = nullptr );
1053
1058 void setScaleLocked( bool isLocked );
1059
1061 void zoomIn();
1062
1064 void zoomOut();
1065
1070 void zoomToSelected( QgsMapLayer *layer = nullptr );
1071
1077 void zoomToSelected( const QList<QgsMapLayer *> &layers );
1078
1083 void zoomToLayers( const QList<QgsMapLayer *> &layers );
1084
1090 void setZoomResolutions( const QList<double> &resolutions ) { mZoomResolutions = resolutions; }
1091
1095 double zoomInFactor() const;
1096
1100 double zoomOutFactor() const;
1101
1108 const QList<double> &zoomResolutions() const { return mZoomResolutions; }
1109
1118 QgsDoubleRange zRange() const;
1119
1128 void setZRange( const QgsDoubleRange &range );
1129
1130 private slots:
1132 void mapToolDestroyed();
1133
1135 void rendererJobFinished();
1136
1138 void previewJobFinished();
1139
1140 void mapUpdateTimeout();
1141
1142 void refreshMap();
1143
1144 void mapThemeChanged( const QString &theme );
1146 void mapThemeRenamed( const QString &theme, const QString &newTheme );
1147
1148 void updateDevicePixelFromScreen();
1149
1150 void onElevationShadingRendererChanged();
1151
1152 signals:
1153
1158 void xyCoordinates( const QgsPointXY &p );
1159
1161 void scaleChanged( double scale );
1162
1169 void scaleLockChanged( bool locked );
1170
1171
1174
1179
1183 void magnificationChanged( double magnification );
1184
1189
1190 // TODO: deprecate when decorations are reimplemented as map canvas items
1191
1202 void renderComplete( QPainter *painter );
1203
1204 // ### QGIS 3: renamte to mapRefreshFinished()
1207
1208 // ### QGIS 3: rename to mapRefreshStarted()
1211
1217
1220
1222 void keyPressed( QKeyEvent *e );
1223
1225 void keyReleased( QKeyEvent *e );
1226
1230 void mapToolSet( QgsMapTool *newTool, QgsMapTool *oldTool );
1231
1238
1240 void zoomLastStatusChanged( bool available );
1241
1243 void zoomNextStatusChanged( bool available );
1244
1249
1254
1259
1264
1269 void themeChanged( const QString &theme );
1270
1272 void messageEmitted( const QString &title, const QString &message, Qgis::MessageLevel level = Qgis::MessageLevel::Info );
1273
1281 void renderErrorOccurred( const QString &error, QgsMapLayer *layer );
1282
1293 void panDistanceBearingChanged( double distance, Qgis::DistanceUnit unit, double bearing );
1294
1299 void tapAndHoldGestureOccurred( const QgsPointXY &mapPoint, QTapAndHoldGesture *gesture );
1300
1307
1317
1325
1326 protected:
1327 bool event( QEvent *e ) override;
1328 void keyPressEvent( QKeyEvent *e ) override;
1329 void keyReleaseEvent( QKeyEvent *e ) override;
1330 void mouseDoubleClickEvent( QMouseEvent *e ) override;
1331 void mouseMoveEvent( QMouseEvent *e ) override;
1332 void mousePressEvent( QMouseEvent *e ) override;
1333 void mouseReleaseEvent( QMouseEvent *e ) override;
1334 void wheelEvent( QWheelEvent *e ) override;
1335 void resizeEvent( QResizeEvent *e ) override;
1336 void paintEvent( QPaintEvent *e ) override;
1337 void dragEnterEvent( QDragEnterEvent *e ) override;
1338 bool viewportEvent( QEvent *event ) override;
1339
1341 void moveCanvasContents( bool reset = false );
1342
1343 void dropEvent( QDropEvent *event ) override;
1344
1345 void showEvent( QShowEvent *event ) override;
1346
1352 void emitExtentsChanged();
1353
1355 class CanvasProperties;
1356
1358 std::unique_ptr<CanvasProperties> mCanvasProperties;
1359
1360#if 0
1361
1366 void connectNotify( const char *signal ) override;
1367#endif
1368
1369 protected slots:
1372
1373 private slots:
1374
1375 void layerRepaintRequested( bool deferred );
1376
1377 void autoRefreshTriggered();
1378
1379 void updateAutoRefreshTimer();
1380
1381 void projectThemesChanged();
1382
1383 void startPreviewJob( int number );
1384
1385 void temporalControllerModeChanged();
1386
1387 private:
1388 // Restore scale RAII
1389 class ScaleRestorer
1390 {
1391 public:
1392 ScaleRestorer( QgsMapCanvas *canvas )
1393 : mCanvas( canvas )
1394 {
1395 mLockedScale = mCanvas->mapSettings().scale();
1396 };
1397
1398 ~ScaleRestorer()
1399 {
1400 QgsRectangle newExtent = mCanvas->mapSettings().extent();
1401 newExtent.scale( mLockedScale / mCanvas->mapSettings().scale() );
1402 mCanvas->mSettings.setExtent( newExtent );
1403 };
1404
1405 private:
1406 QgsMapCanvas *mCanvas;
1407 double mLockedScale;
1408 };
1409
1410 enum class CacheInvalidationType
1411 {
1412 Temporal = 1 << 0,
1413 Elevation = 1 << 1,
1414 };
1415
1416 QgsOverlayWidgetLayout *mLayout = nullptr;
1417
1418 Qgis::MapCanvasFlags mFlags;
1419
1421 QgsMapSettings mSettings;
1422
1424 QgsMapCanvasMap *mMap = nullptr;
1425
1426 QgsScreenHelper *mScreenHelper = nullptr;
1427
1432 QgsTemporalController *mController = nullptr;
1433
1435 bool mFrozen = false;
1436
1438 bool mRefreshScheduled = false;
1439
1441 bool mRefreshAfterJob = false;
1442
1444 bool mRenderFlag = true;
1445
1446 QFlags<CacheInvalidationType> mCacheInvalidations;
1447
1449 QPointer<QgsMapLayer> mCurrentLayer;
1450
1452 QGraphicsScene *mScene = nullptr;
1453
1455 QgsMapTool *mMapTool = nullptr;
1456
1458 QgsProject *mProject = nullptr;
1459
1461 QList<QgsRectangle> mLastExtent;
1462 int mLastExtentIndex = -1;
1463
1465 double mWheelZoomFactor = 2.0;
1466
1468 QTimer mMapUpdateTimer;
1469
1471 QgsMapRendererQImageJob *mJob = nullptr;
1472
1474 bool mJobCanceled = false;
1475
1477 std::unique_ptr<QgsLabelingResults> mLabelingResults;
1478
1480 bool mLabelingResultsOutdated = false;
1481
1486 std::unique_ptr<QgsRenderedItemResults> mRenderedItemResults;
1487
1492 std::unique_ptr<QgsRenderedItemResults> mPreviousRenderedItemResults;
1493
1499 bool mRenderedItemResultsOutdated = false;
1500
1502 bool mUseParallelRendering = false;
1503
1505 bool mDrawRenderingStats = false;
1506
1508 std::unique_ptr<QgsMapRendererCache> mCache;
1509
1510 QTimer *mResizeTimer = nullptr;
1511 QTimer *mRefreshTimer = nullptr;
1512
1513 QgsPreviewEffect *mPreviewEffect = nullptr;
1514
1515 QgsRectangle imageRect( const QImage &img, const QgsMapSettings &mapSettings );
1516
1517 QgsSnappingUtils *mSnappingUtils = nullptr;
1518
1519 QList<QgsMapRendererQImageJob *> mPreviewJobs;
1520
1522 bool mScaleLocked = false;
1523
1524 QgsExpressionContextScope mExpressionContextScope;
1525
1527 QRect mZoomRect;
1528
1530 bool mZoomDragging = false;
1531
1533 std::unique_ptr<QgsRubberBand> mZoomRubberBand;
1534
1535 QCursor mZoomCursor;
1536
1537 QTimer mAutoRefreshTimer;
1538
1539 QTimer mPreviewTimer;
1540 QMetaObject::Connection mPreviewTimerConnection;
1541
1542 QString mTheme;
1543
1544 QgsPointXY mCursorPoint;
1545
1546 bool mAnnotationsVisible = true;
1547
1548 bool mUsePreviewJobs = false;
1549
1550 QHash<QString, int> mLastLayerRenderTime;
1551
1552 QVector<QPointer<QgsCustomDropHandler>> mDropHandlers;
1553
1554 QgsDistanceArea mDa;
1555 QList<double> mZoomResolutions;
1556
1557 QList<QgsMapCanvasInteractionBlocker *> mInteractionBlockers;
1558
1559 int mBlockItemPositionUpdates = 0;
1560 int mBlockExtentChangedSignal = 0;
1561 int mBlockScaleChangedSignal = 0;
1562
1563 std::unique_ptr<QgsTemporaryCursorOverride> mTemporaryCursorOverride;
1564
1572 QMap<QString, QDateTime> mRendererErrors;
1573
1574
1575 QPointer<QgsAbstract2DMapController> mMapController;
1576
1577 QPointer< QgsStatusBar > mStatusBar;
1578
1579 QPointer< QgsMessageBar > mMessageBar;
1580
1581 QPointer< QgsUserInputWidget > mUserInputWidget;
1582
1587 QgsPointXY cursorPoint() const;
1588
1592 void updateMapSize();
1593
1598 void beginZoomRect( QPoint pos );
1599
1604 void endZoomRect( QPoint pos );
1605
1607 void stopZoomRect();
1608
1610 void startPan();
1611
1613 void stopPan();
1614
1623 bool boundingBoxOfFeatureIds( const QgsFeatureIds &ids, QgsVectorLayer *layer, QgsRectangle &bbox, QString &errorMsg ) const;
1624
1631 QgsRectangle optimalExtentForPointLayer( QgsVectorLayer *layer, const QgsPointXY &center, int scaleFactor = 5 );
1632
1633 void setLayersPrivate( const QList<QgsMapLayer *> &layers );
1634
1635 void startPreviewJobs();
1636 void stopPreviewJobs();
1637 void schedulePreviewJob( int number );
1638
1642 bool panOperationInProgress();
1643
1644 int nextZoomLevel( const QList<double> &resolutions, bool zoomIn = true ) const;
1645
1650 void clearTemporalCache();
1651
1655 void clearElevationCache();
1656
1657 void showContextMenu( QgsMapMouseEvent *event );
1658
1663 void notifyRendererErrors( const QgsMapRendererJob::Errors &errors );
1664
1665 friend class TestQgsMapCanvas;
1666
1667}; // class QgsMapCanvas
1668
1669// clazy:excludeall=qstring-allocations
1670
1671#endif
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
DistanceUnit
Units of distance.
Definition qgis.h:5382
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Definition qgis.h:160
@ Info
Information message.
Definition qgis.h:161
QFlags< MapCanvasFlag > MapCanvasFlags
Flags controlling behavior of map canvases.
Definition qgis.h:3649
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:217
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.
void zoomToSelected(QgsMapLayer *layer=nullptr)
Zoom to the extent of the selected features of provided map layer.
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 setRenderFlag(bool flag)
Sets whether a user has disabled canvas renders via the GUI.
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.
void stopRendering()
stop rendering (if there is any right now)
bool previewJobsEnabled
static const QgsSettingsEntryBool * settingsMainCanvasPreviewJobs
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 layerStateChange()
This slot is connected to the visibility change of one or more layers.
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.
static const QgsSettingsEntryBool * settingsEnableRenderCaching
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 saveAsImage(const QString &fileName, QPixmap *QPixmap=nullptr, const QString &="PNG")
Save the contents of the map canvas to disk as an image.
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 zoomOut()
Zoom out with fixed factor.
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 writeProject(QDomDocument &)
called to write map canvas settings to project
void mousePressEvent(QMouseEvent *e) override
void updateScale()
Emits signal scaleChanged to update scale in main window.
void setMagnificationFactor(double factor, const QgsPointXY *center=nullptr)
Sets the factor of magnification to apply to the map canvas.
void refreshAllLayers()
Reload all layers (including refreshing layer properties from their data sources),...
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 redrawAllLayers()
Clears all cached images and redraws all layers.
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 zoomToLayers(const QList< QgsMapLayer * > &layers)
Zoom to the combined extent of a set of layers.
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
void selectionChangedSlot()
Receives signal about selection change, and pass it on with layer info.
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.
void zoomIn()
Zoom in with fixed factor.
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
static const QgsSettingsEntryString * settingsCustomCoordinateCrs
void dropEvent(QDropEvent *event) override
QgsProject * project()
Returns the project linked to this canvas.
void setScaleLocked(bool isLocked)
Lock the scale, so zooming can be performed using magnication.
void setRotation(double degrees)
Set the rotation of the map canvas in clockwise degrees.
void readProject(const QDomDocument &)
called to read map canvas settings from project
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 refresh()
Repaints the canvas map.
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:74
A bar for displaying non-blocking messages to the user.
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:114
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.
A boolean settings entry.
A string settings entry.
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.
A floating widget that can be used to display widgets for user inputs.
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:705