QGIS API Documentation 3.41.0-Master (88383c3d16f)
|
QgsMapToolCapture is a base class capable of capturing point, lines and polygons. More...
#include <qgsmaptoolcapture.h>
Public Types | |
typedef QFlags< Capability > | Capabilities |
enum | Capability { NoCapabilities = 1 << 0 , SupportsCurves = 1 << 1 , ValidateGeometries = 1 << 2 } |
Specific capabilities of the tool. More... | |
enum | CaptureMode { CaptureNone , CapturePoint , CaptureLine , CapturePolygon } |
Different capture modes. More... | |
![]() | |
enum | Flag { Transient = 1 << 1 , EditTool = 1 << 2 , AllowZoomRect = 1 << 3 , ShowContextMenu = 1 << 4 } |
Enumeration of flags that adjust the way the map tool operates. More... | |
typedef QFlags< Flag > | Flags |
Public Slots | |
Q_DECL_DEPRECATED void | setCircularDigitizingEnabled (bool enable) |
Enable the digitizing with curve. | |
Q_DECL_DEPRECATED void | setStreamDigitizingEnabled (bool enable) |
Toggles the stream digitizing mode. | |
Public Member Functions | |
QgsMapToolCapture (QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget, CaptureMode mode) | |
constructor | |
~QgsMapToolCapture () override | |
void | activate () override |
Registers this maptool with the cad dock widget. | |
int | addCurve (QgsCurve *c) |
Adds a whole curve (e.g. circularstring) to the captured geometry. Curve must be in map CRS. | |
void | cadCanvasMoveEvent (QgsMapMouseEvent *e) override |
Override this method when subclassing this class. | |
void | cadCanvasReleaseEvent (QgsMapMouseEvent *e) override |
Override this method when subclassing this class. | |
virtual QgsMapToolCapture::Capabilities | capabilities () const |
Returns flags containing the supported capabilities. | |
const QgsCompoundCurve * | captureCurve () const |
Gets the capture curve. | |
void | clean () override |
convenient method to clean members | |
void | clearCurve () |
Clear capture curve. | |
Qgis::CaptureTechnique | currentCaptureTechnique () const |
Returns the active capture technique. | |
void | deactivate () override |
Unregisters this maptool from the cad dock widget. | |
void | deleteTempRubberBand () |
Clean a temporary rubberband. | |
void | keyPressEvent (QKeyEvent *e) override |
Intercept key events like Esc or Del to delete the last point. | |
QgsPoint | mapPoint (const QgsMapMouseEvent &e) const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer). | |
QgsPoint | mapPoint (const QgsPointXY &point) const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer). | |
CaptureMode | mode () const |
The capture mode. | |
void | setCurrentCaptureTechnique (Qgis::CaptureTechnique technique) |
Sets the current capture if it is supported by the map tool. | |
void | setCurrentShapeMapTool (const QgsMapToolShapeMetadata *shapeMapToolMetadata) |
Sets the current shape tool. | |
QList< QgsPointLocator::Match > | snappingMatches () const |
Returns a list of matches for each point on the captureCurve. | |
virtual bool | supportsTechnique (Qgis::CaptureTechnique technique) const |
Returns true if the tool supports the specified capture technique. | |
QgsRubberBand * | takeRubberBand () |
Returns the rubberBand currently owned by this map tool and transfers ownership to the caller. | |
![]() | |
QgsMapToolAdvancedDigitizing (QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget) | |
Creates an advanced digitizing maptool. | |
~QgsMapToolAdvancedDigitizing () override | |
virtual void | cadCanvasPressEvent (QgsMapMouseEvent *e) |
Override this method when subclassing this class. | |
QgsAdvancedDigitizingDockWidget * | cadDockWidget () const |
void | canvasMoveEvent (QgsMapMouseEvent *e) override |
Catch the mouse move event, filters it, transforms it to map coordinates and send it to virtual method. | |
void | canvasPressEvent (QgsMapMouseEvent *e) override |
Catch the mouse press event, filters it, transforms it to map coordinates and send it to virtual method. | |
void | canvasReleaseEvent (QgsMapMouseEvent *e) override |
Catch the mouse release event, filters it, transforms it to map coordinates and send it to virtual method. | |
bool | isAdvancedDigitizingAllowed () const |
Returns whether functionality of advanced digitizing dock widget is currently allowed. | |
bool | isAutoSnapEnabled () const |
Returns whether mouse events (press/move/release) should automatically try to snap mouse position (according to the snapping configuration of map canvas) before passing the mouse coordinates to the tool. | |
virtual QgsMapLayer * | layer () const |
Returns the layer associated with the map tool. | |
void | setSnapToLayerGridEnabled (bool snapToLayerGridEnabled) |
Enables or disables snap to grid of mouse events. | |
bool | snapToLayerGridEnabled () const |
Enables or disables snap to grid of mouse events. | |
bool | useSnappingIndicator () const |
Returns whether the snapping indicator should automatically be used. | |
![]() | |
QgsMapToolEdit (QgsMapCanvas *canvas) | |
QgsGeometryRubberBand * | createGeometryRubberBand (Qgis::GeometryType geometryType=Qgis::GeometryType::Line, bool alternativeBand=false) const |
Creates a geometry rubber band with the color/line width from the QGIS settings. | |
Flags | flags () const override |
Returns the flags for the map tool. | |
![]() | |
~QgsMapTool () override | |
QAction * | action () |
Returns associated action with map tool or nullptr if no action is associated. | |
QAbstractButton * | button () |
Returns associated button with map tool or nullptr if no button is associated. | |
QgsMapCanvas * | canvas () const |
returns pointer to the tool's map canvas | |
virtual void | canvasDoubleClickEvent (QgsMapMouseEvent *e) |
Mouse double-click event for overriding. Default implementation does nothing. | |
virtual bool | canvasToolTipEvent (QHelpEvent *e) |
Tooltip event for overriding. | |
virtual bool | gestureEvent (QGestureEvent *e) |
gesture event for overriding. Default implementation does nothing. | |
bool | isActive () const |
Returns if the current map tool active on the map canvas. | |
virtual void | keyReleaseEvent (QKeyEvent *e) |
Key event for overriding. Default implementation does nothing. | |
virtual void | populateContextMenu (QMenu *menu) |
Allows the tool to populate and customize the given menu, prior to showing it in response to a right-mouse button click. | |
virtual bool | populateContextMenuWithEvent (QMenu *menu, QgsMapMouseEvent *event) |
Allows the tool to populate and customize the given menu, prior to showing it in response to a right-mouse button click. | |
virtual void | reactivate () |
Called when the map tool is being activated while it is already active. | |
void | setAction (QAction *action) |
Use this to associate a QAction to this maptool. | |
void | setButton (QAbstractButton *button) |
Use this to associate a button to this maptool. | |
virtual void | setCursor (const QCursor &cursor) |
Sets a user defined cursor. | |
QgsPointXY | toMapCoordinates (QPoint point) |
Transforms a point from screen coordinates to map coordinates. | |
QString | toolName () |
Emit map tool changed with the old tool. | |
virtual void | wheelEvent (QWheelEvent *e) |
Mouse wheel event for overriding. Default implementation does nothing. | |
Protected Slots | |
void | stopCapturing () |
Stop capturing. | |
Protected Member Functions | |
int | addVertex (const QgsPointXY &mapPoint, const QgsPointLocator::Match &match) |
Variant to supply more information in the case of snapping. | |
int | addVertex (const QgsPointXY &point) |
Adds a point to the rubber band (in map coordinates) and to the capture list (in layer coordinates) | |
void | closePolygon () |
Close an open polygon. | |
int | fetchLayerPoint (const QgsPointLocator::Match &match, QgsPoint &layerPoint) |
Fetches the original point from the source layer. | |
bool | isCapturing () const |
Are we currently capturing? | |
int | nextPoint (const QgsPoint &mapPoint, QgsPoint &layerPoint) |
Converts a map point to layer coordinates. | |
int | nextPoint (QPoint p, QgsPoint &layerPoint, QgsPoint &mapPoint) |
Converts a point to map coordinates and layer coordinates. | |
Q_DECL_DEPRECATED QVector< QgsPointXY > | points () const |
List of digitized points. | |
QgsPointSequence | pointsZM () const |
List of digitized points. | |
void | setPoints (const QgsPointSequence &pointList) |
Set the points on which to work. | |
Q_DECL_DEPRECATED void | setPoints (const QVector< QgsPointXY > &pointList) |
Set the points on which to work. | |
int | size () |
Number of points digitized. | |
void | startCapturing () |
Start capturing. | |
void | undo (bool isAutoRepeat=false) |
Removes the last vertex from mRubberBand and mCaptureList. | |
![]() | |
void | setAdvancedDigitizingAllowed (bool allowed) |
Sets whether functionality of advanced digitizing dock widget is currently allowed. | |
void | setAutoSnapEnabled (bool enabled) |
Sets whether mouse events (press/move/release) should automatically try to snap mouse position This method is protected because it should be a decision of the map tool and not from elsewhere. | |
void | setUseSnappingIndicator (bool enabled) |
Sets whether a snapping indicator should automatically be used. | |
![]() | |
TopologicalResult | addTopologicalPoints (const QVector< QgsPoint > &vertices) |
Adds a list of vertices to other features to keep topology up to date, e.g. | |
Q_DECL_DEPRECATED TopologicalResult | addTopologicalPoints (const QVector< QgsPointXY > &vertices) |
Adds a list of vertices to other features to keep topology up to date, e.g. | |
QgsRubberBand * | createRubberBand (Qgis::GeometryType geometryType=Qgis::GeometryType::Line, bool alternativeBand=false) |
Creates a rubber band with the color/line width from the QGIS settings. | |
QgsVectorLayer * | currentVectorLayer () |
Returns the current vector layer of the map canvas or 0. | |
void | notifyNotEditableLayer () |
Display a timed message bar noting the active vector layer is not editable. | |
void | notifyNotVectorLayer () |
Display a timed message bar noting the active layer is not vector. | |
![]() | |
QgsMapTool (QgsMapCanvas *canvas) | |
Constructor takes a map canvas as a parameter. | |
QgsMapLayer * | layer (const QString &id) |
Returns the map layer with the matching ID, or nullptr if no layers could be found. | |
void | setToolName (const QString &name) |
Sets the tool's name. | |
QPoint | toCanvasCoordinates (const QgsPointXY &point) const |
Transforms a point from map coordinates to screen coordinates. | |
QgsPoint | toLayerCoordinates (const QgsMapLayer *layer, const QgsPoint &point) |
Transforms a point from map coordinates to layer coordinates. | |
QgsPointXY | toLayerCoordinates (const QgsMapLayer *layer, const QgsPointXY &point) |
Transforms a point from map coordinates to layer coordinates. | |
QgsRectangle | toLayerCoordinates (const QgsMapLayer *layer, const QgsRectangle &rect) |
Transforms a rect from map coordinates to layer coordinates. | |
QgsPointXY | toLayerCoordinates (const QgsMapLayer *layer, QPoint point) |
Transforms a point from screen coordinates to layer coordinates. | |
QgsPoint | toMapCoordinates (const QgsMapLayer *layer, const QgsPoint &point) |
Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used). | |
QgsPointXY | toMapCoordinates (const QgsMapLayer *layer, const QgsPointXY &point) |
Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used). | |
Friends | |
class | TestQgsMapToolCapture |
Additional Inherited Members | |
![]() | |
void | activated () |
signal emitted once the map tool is activated | |
void | deactivated () |
signal emitted once the map tool is deactivated | |
void | messageDiscarded () |
emit signal to clear previous message | |
void | messageEmitted (const QString &message, Qgis::MessageLevel=Qgis::MessageLevel::Info) |
emit a message | |
void | reactivated () |
![]() | |
static double | defaultMValue () |
Returns default M value. | |
static double | defaultZValue () |
Returns default Z value. | |
![]() | |
static double | searchRadiusMM () |
Gets search radius in mm. | |
static double | searchRadiusMU (const QgsRenderContext &context) |
Gets search radius in map units for given context. | |
static double | searchRadiusMU (QgsMapCanvas *canvas) |
Gets search radius in map units for given canvas. | |
![]() | |
enum | TopologicalResult { Success = 0 , InvalidCanvas = 1 , InvalidLayer = 2 } |
Result of addTopologicalPoints. More... | |
![]() | |
static QColor | digitizingFillColor () |
Returns fill color for rubber bands (from global settings) | |
static QColor | digitizingStrokeColor () |
Returns stroke color for rubber bands (from global settings) | |
static int | digitizingStrokeWidth () |
Returns stroke width for rubber bands (from global settings) | |
![]() | |
QgsAdvancedDigitizingDockWidget * | mCadDockWidget = nullptr |
![]() | |
QAction * | mAction = nullptr |
Optional pointer to an action that will be checked on map tool activation and unchecked on map tool deactivation. | |
QAbstractButton * | mButton = nullptr |
Optional pointer to a button that will be checked on map tool activation and unchecked on map tool deactivation. | |
QPointer< QgsMapCanvas > | mCanvas |
The pointer to the map canvas. | |
QCursor | mCursor |
The cursor used in the map tool. | |
QString | mToolName |
The translated name of the map tool. | |
QgsMapToolCapture is a base class capable of capturing point, lines and polygons.
The tool supports different techniques: straight segments, curves, streaming and shapes Once the the geometry is captured the virtual private handler geometryCaptured is called as well as a more specific handler (pointCaptured, lineCaptured or polygonCaptured)
Definition at line 48 of file qgsmaptoolcapture.h.
typedef QFlags< Capability > QgsMapToolCapture::Capabilities |
Definition at line 70 of file qgsmaptoolcapture.h.
Specific capabilities of the tool.
Enumerator | |
---|---|
NoCapabilities | No specific capabilities. |
SupportsCurves | Supports curved geometries input. |
ValidateGeometries | Tool supports geometry validation.
|
Definition at line 63 of file qgsmaptoolcapture.h.
Different capture modes.
Enumerator | |
---|---|
CaptureNone | Do not capture / determine mode from layer geometry type. |
CapturePoint | Capture points. |
CaptureLine | Capture lines. |
CapturePolygon | Capture polygons. |
Definition at line 54 of file qgsmaptoolcapture.h.
QgsMapToolCapture::QgsMapToolCapture | ( | QgsMapCanvas * | canvas, |
QgsAdvancedDigitizingDockWidget * | cadDockWidget, | ||
CaptureMode | mode | ||
) |
constructor
Definition at line 48 of file qgsmaptoolcapture.cpp.
|
override |
Definition at line 75 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Registers this maptool with the cad dock widget.
Reimplemented from QgsMapToolAdvancedDigitizing.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 116 of file qgsmaptoolcapture.cpp.
int QgsMapToolCapture::addCurve | ( | QgsCurve * | c | ) |
Adds a whole curve (e.g. circularstring) to the captured geometry. Curve must be in map CRS.
Definition at line 813 of file qgsmaptoolcapture.cpp.
|
protected |
Variant to supply more information in the case of snapping.
mapPoint | The vertex to add in map coordinates |
match | Data about the snapping match. Can be an invalid match, if point not snapped. |
Definition at line 696 of file qgsmaptoolcapture.cpp.
|
protected |
Adds a point to the rubber band (in map coordinates) and to the capture list (in layer coordinates)
Definition at line 691 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Override this method when subclassing this class.
This will receive adapted events from the cad system whenever a canvasMoveEvent is triggered and it's not hidden by the cad's construction mode.
e | Mouse events prepared by the cad system |
Reimplemented from QgsMapToolAdvancedDigitizing.
Definition at line 493 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Override this method when subclassing this class.
This will receive adapted events from the cad system whenever a canvasReleaseEvent is triggered and it's not hidden by the cad's construction mode.
e | Mouse events prepared by the cad system |
Reimplemented from QgsMapToolAdvancedDigitizing.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 1271 of file qgsmaptoolcapture.cpp.
|
virtual |
Returns flags containing the supported capabilities.
Reimplemented in QgsMapToolCaptureAnnotationItem, and QgsMapToolDigitizeFeature.
Definition at line 97 of file qgsmaptoolcapture.cpp.
|
inline |
|
overridevirtual |
convenient method to clean members
Reimplemented from QgsMapTool.
Definition at line 1044 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::clearCurve | ( | ) |
Clear capture curve.
Definition at line 870 of file qgsmaptoolcapture.cpp.
|
protected |
Close an open polygon.
Definition at line 1053 of file qgsmaptoolcapture.cpp.
|
inline |
Returns the active capture technique.
Definition at line 99 of file qgsmaptoolcapture.h.
|
overridevirtual |
Unregisters this maptool from the cad dock widget.
Reimplemented from QgsMapToolAdvancedDigitizing.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 128 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::deleteTempRubberBand | ( | ) |
Clean a temporary rubberband.
Definition at line 1039 of file qgsmaptoolcapture.cpp.
|
protected |
Fetches the original point from the source layer.
If topological editing is activated. The points are projected to the current layer CRS.
Definition at line 627 of file qgsmaptoolcapture.cpp.
|
protected |
Are we currently capturing?
Definition at line 1011 of file qgsmaptoolcapture.cpp.
|
overridevirtual |
Intercept key events like Esc or Del to delete the last point.
e | key event |
Reimplemented from QgsMapTool.
Reimplemented in QgsMapToolDigitizeFeature.
Definition at line 961 of file qgsmaptoolcapture.cpp.
QgsPoint QgsMapToolCapture::mapPoint | ( | const QgsMapMouseEvent & | e | ) | const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer).
If the point is snapped, then the Z value is derived from the snapped point.
e | A mouse event |
Definition at line 1215 of file qgsmaptoolcapture.cpp.
QgsPoint QgsMapToolCapture::mapPoint | ( | const QgsPointXY & | point | ) | const |
Creates a QgsPoint with ZM support if necessary (according to the WkbType of the current layer).
point | A point in 2D |
Definition at line 1176 of file qgsmaptoolcapture.cpp.
|
inline |
Converts a map point to layer coordinates.
mapPoint | the point in map coordinates | |
[in,out] | layerPoint | the point in layer coordinates |
nullptr
2 if the transformation failed Definition at line 594 of file qgsmaptoolcapture.cpp.
Converts a point to map coordinates and layer coordinates.
p | the input point | |
[in,out] | layerPoint | the point in layer coordinates |
[in,out] | mapPoint | the point in map coordinates |
nullptr
or not a vector layer 2 if the transformation failed Definition at line 621 of file qgsmaptoolcapture.cpp.
|
protected |
List of digitized points.
Definition at line 1137 of file qgsmaptoolcapture.cpp.
|
protected |
List of digitized points.
Definition at line 1145 of file qgsmaptoolcapture.cpp.
|
slot |
Enable the digitizing with curve.
Definition at line 414 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::setCurrentCaptureTechnique | ( | Qgis::CaptureTechnique | technique | ) |
Sets the current capture if it is supported by the map tool.
Definition at line 430 of file qgsmaptoolcapture.cpp.
void QgsMapToolCapture::setCurrentShapeMapTool | ( | const QgsMapToolShapeMetadata * | shapeMapToolMetadata | ) |
Sets the current shape tool.
Definition at line 472 of file qgsmaptoolcapture.cpp.
|
protected |
Set the points on which to work.
pointList | A list of points |
Definition at line 1164 of file qgsmaptoolcapture.cpp.
|
protected |
Set the points on which to work.
pointList | A list of points |
Definition at line 1152 of file qgsmaptoolcapture.cpp.
|
slot |
Toggles the stream digitizing mode.
Definition at line 422 of file qgsmaptoolcapture.cpp.
|
protected |
Number of points digitized.
Definition at line 1132 of file qgsmaptoolcapture.cpp.
QList< QgsPointLocator::Match > QgsMapToolCapture::snappingMatches | ( | ) | const |
Returns a list of matches for each point on the captureCurve.
Definition at line 876 of file qgsmaptoolcapture.cpp.
|
protected |
Start capturing.
Definition at line 1006 of file qgsmaptoolcapture.cpp.
|
protectedslot |
Stop capturing.
Definition at line 1016 of file qgsmaptoolcapture.cpp.
|
virtual |
Returns true
if the tool supports the specified capture technique.
Reimplemented in QgsMapToolCaptureAnnotationItem, and QgsMapToolDigitizeFeature.
Definition at line 102 of file qgsmaptoolcapture.cpp.
QgsRubberBand * QgsMapToolCapture::takeRubberBand | ( | ) |
Returns the rubberBand currently owned by this map tool and transfers ownership to the caller.
May be nullptr
.
Definition at line 409 of file qgsmaptoolcapture.cpp.
|
protected |
Removes the last vertex from mRubberBand and mCaptureList.
Since QGIS 3.20, if isAutoRepeat is set to true
then the undo operation will be treated as a auto repeated undo as if the user has held down the undo key for an extended period of time.
Definition at line 881 of file qgsmaptoolcapture.cpp.
|
friend |
Definition at line 441 of file qgsmaptoolcapture.h.