30 mSnappingMarker.setParentOwner( canvas );
39 if ( !mMatch.isValid() )
41 if ( mSnappingMarker )
43 mCanvas->scene()->removeItem( mSnappingMarker );
44 mSnappingMarker.reset();
50 if ( !mSnappingMarker )
58 mSnappingMarker->setColor( color );
61 if (
match.hasLineEndpoint() )
65 else if (
match.hasVertex() )
72 else if (
match.hasMiddleSegment() )
76 else if (
match.hasCentroid() )
80 else if (
match.hasArea() )
89 mSnappingMarker->setIconType( iconType );
91 mSnappingMarker->setCenter(
match.point() );
96 const QPoint ptCanvas = mSnappingMarker->toCanvasCoordinates(
match.point() ).toPoint();
97 const QPoint ptGlobal = mCanvas->mapToGlobal( ptCanvas );
98 const QRect rect( ptCanvas.x(), ptCanvas.y(), 1, 1 );
99 const QString layerName =
match.layer() ?
match.layer()->name() : QString();
100 QToolTip::showText( ptGlobal, layerName, mCanvas, rect );
107 if ( mSnappingMarker )
108 mSnappingMarker->setVisible( visible );
113 if ( mSnappingMarker )
114 return mSnappingMarker->isVisible();
Map canvas is a class for displaying all GIS data types on a canvas.
static const QgsSettingsEntryBool * settingsDigitizingSnapTooltip
Settings entry digitizing snap tooltip.
static const QgsSettingsEntryColor * settingsDigitizingSnapColor
Settings entry digitizing snap color.
QgsPointLocator::Match match() const
Returns currently displayed snapping match.
void setVisible(bool visible=true)
Sets whether the snapping indicator is visible.
void setMatch(const QgsPointLocator::Match &match)
Sets snapping match that should be displayed in map canvas. Invalid match hides the indicator.
QgsSnapIndicator(QgsMapCanvas *canvas)
Constructs an indicator for the given map canvas.
bool isVisible() const
Returns whether the snapping indicator is visible.
A map canvas item for marking vertices of features using e.g.
@ ICON_TRIANGLE
Added in QGIS 3.12.
@ ICON_DOUBLE_TRIANGLE
Added in QGIS 3.0.
@ ICON_INVERTED_TRIANGLE
Added in QGIS 3.20.
@ ICON_RHOMBUS
Added in QGIS 3.12.
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...