QGIS API Documentation
4.3.0-Master (52aa6503bed)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gui
maptools
qgsmaptoolextraitem.h
Go to the documentation of this file.
1
/***************************************************************************
2
qgsmaptoolextraitem.h
3
---------------------
4
begin : 2026/01/22
5
copyright : (C) 2026 by Julien Cabieces
6
email : julien dot cabieces at oslandia 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
16
#ifndef QGSMAPTOOLEXTRAITEM_H
17
#define QGSMAPTOOLEXTRAITEM_H
18
19
#include "
qgsgraphicsviewmousehandles.h
"
20
#include "
qgsmapcanvas.h
"
21
#include "
qgsmaptool.h
"
22
#include "
qgspropertyoverridebutton.h
"
23
#include "
qgsrubberband.h
"
24
#include "
qobjectuniqueptr.h
"
25
26
#define SIP_NO_FILE
27
28
class
QgsTemplatedLineSymbolLayerBase
;
29
class
QgsMapToolModifyExtraItems
;
30
class
QgsExtraItemRubberBand
;
31
42
class
GUI_EXPORT
QgsMapToolExtraItemBase
:
public
QgsMapTool
43
{
44
Q_OBJECT
45
46
public
:
54
QgsMapToolExtraItemBase
(
QgsMapCanvas
*
canvas
,
QgsVectorLayer
*
layer
,
QgsTemplatedLineSymbolLayerBase
*symbolLayer,
QgsPropertyOverrideButton
*propertyButton );
55
59
enum
State
60
{
61
SelectFeature
,
62
FeatureSelected
63
};
64
65
protected
:
69
void
loadFeatureExtraItems();
74
void
updateAttribute();
75
79
void
selectFeature(
QgsMapMouseEvent
*event );
80
81
QPointer<QgsVectorLayer>
mLayer
;
82
QgsTemplatedLineSymbolLayerBase
*
mSymbolLayer
=
nullptr
;
83
int
mExtraItemsFieldIndex
= -1;
84
QgsFeatureId
mFeatureId
=
FID_NULL
;
85
State
mState
=
SelectFeature
;
86
std::vector<QObjectUniquePtr<QgsExtraItemRubberBand>>
mExtraItems
;
87
QgsPropertyOverrideButton
*
mPropertyButton
=
nullptr
;
88
89
friend
class
TestQgsMapToolExtraItem
;
90
};
91
103
class
GUI_EXPORT
QgsMapToolAddExtraItem
:
public
QgsMapToolExtraItemBase
104
{
105
Q_OBJECT
106
107
public
:
115
QgsMapToolAddExtraItem
(
QgsMapCanvas
*
canvas
,
QgsVectorLayer
*
layer
,
QgsTemplatedLineSymbolLayerBase
*symbolLayer,
QgsPropertyOverrideButton
*propertyButton );
116
117
void
canvasPressEvent
(
QgsMapMouseEvent
*e )
override
;
118
void
keyPressEvent
( QKeyEvent *event )
override
;
119
120
private
:
121
friend
class
TestQgsMapToolExtraItem
;
122
};
123
135
class
GUI_EXPORT
QgsMapToolModifyExtraItems
:
public
QgsMapToolExtraItemBase
136
{
137
Q_OBJECT
138
139
public
:
147
QgsMapToolModifyExtraItems
(
QgsMapCanvas
*
canvas
,
QgsVectorLayer
*
layer
,
QgsTemplatedLineSymbolLayerBase
*symbolLayer,
QgsPropertyOverrideButton
*propertyButton );
148
149
void
activate
()
override
;
150
void
deactivate
()
override
;
151
155
QList<QGraphicsItem *>
selectedItems
()
const
;
156
157
void
canvasPressEvent
(
QgsMapMouseEvent
*event )
override
;
158
void
canvasMoveEvent
(
QgsMapMouseEvent
*event )
override
;
159
void
canvasReleaseEvent
(
QgsMapMouseEvent
*event )
override
;
160
void
keyPressEvent
( QKeyEvent *event )
override
;
161
166
void
attemptMoveBy
( QGraphicsItem *item,
double
deltaX,
double
deltaY );
167
172
void
attemptRotateBy
( QGraphicsItem *item,
double
deltaDegree,
double
deltaCenterX,
double
deltaCenterY );
173
174
signals:
175
179
void
selectedItemsChanged
();
180
181
private
slots:
182
186
void
onMapCanvasExtentsChanged();
187
188
private
:
195
QgsPointXY
movePosition(
const
QgsPointXY
&position,
double
deltaX,
double
deltaY )
const
;
196
209
class
QgsMapToolModifyExtraItemMouseHandles :
public
QgsGraphicsViewMouseHandles
210
{
211
public
:
217
QgsMapToolModifyExtraItemMouseHandles(
QgsMapToolModifyExtraItems
*mapTool,
QgsMapCanvas
*
canvas
);
218
219
void
paint( QPainter *painter,
const
QStyleOptionGraphicsItem *option, QWidget *widget )
override
;
220
void
setViewportCursor( Qt::CursorShape cursor )
override
;
221
QList<QGraphicsItem *> sceneItemsAtPoint( QPointF scenePoint )
override
;
222
QList<QGraphicsItem *> selectedSceneItems(
bool
includeLockedItems =
true
)
const override
;
223
QRectF itemRect( QGraphicsItem *item )
const override
;
224
void
moveItem( QGraphicsItem *item,
double
deltaX,
double
deltaY )
override
;
225
void
rotateItem( QGraphicsItem *item,
double
deltaDegree,
double
deltaCenterX,
double
deltaCenterY )
override
;
226
void
setItemRect( QGraphicsItem *item, QRectF rect )
override
;
227
228
using
QgsGraphicsViewMouseHandles::hoverMoveEvent;
229
using
QgsGraphicsViewMouseHandles::mouseMoveEvent;
230
using
QgsGraphicsViewMouseHandles::mousePressEvent;
231
using
QgsGraphicsViewMouseHandles::mouseReleaseEvent;
232
using
QgsGraphicsViewMouseHandles::updateHandles;
233
234
private
:
235
QgsMapToolModifyExtraItems
*mMapTool =
nullptr
;
236
QgsMapCanvas
*
mCanvas
=
nullptr
;
237
238
friend
class
TestQgsMapToolExtraItem
;
239
};
240
241
QList<QGraphicsItem *> mSelectedItems;
242
QList<std::tuple<double, double, double>> mCopiedItems;
243
QObjectUniquePtr<QgsMapToolModifyExtraItemMouseHandles>
mMouseHandles;
244
bool
mHoveringMouseHandles =
false
;
245
bool
mCanceled =
false
;
246
bool
mDragging =
false
;
247
QRect mSelectionRect;
248
QPoint mLastPos;
249
QPointF mCopiedItemsTopLeft;
250
QObjectUniquePtr<QgsRubberBand>
mSelectionRubberBand;
251
252
friend
class
TestQgsMapToolExtraItem
;
253
};
254
255
#endif
QObjectUniquePtr
Keeps a pointer to a QObject and deletes it whenever this object is deleted.
Definition
qobjectuniqueptr.h:45
QgsExtraItemRubberBand
Rubber band for one extra item.
Definition
qgsmaptoolextraitem.cpp:44
QgsMapMouseEvent
A mouse event which is the result of a user interaction with a QgsMapCanvas.
Definition
qgsmapmouseevent.h:38
QgsMapToolAddExtraItem::QgsMapToolAddExtraItem
QgsMapToolAddExtraItem(QgsMapCanvas *canvas, QgsVectorLayer *layer, QgsTemplatedLineSymbolLayerBase *symbolLayer, QgsPropertyOverrideButton *propertyButton)
Constructor.
Definition
qgsmaptoolextraitem.cpp:231
QgsMapToolAddExtraItem::TestQgsMapToolExtraItem
friend class TestQgsMapToolExtraItem
Definition
qgsmaptoolextraitem.h:121
QgsMapToolExtraItemBase::mFeatureId
QgsFeatureId mFeatureId
Definition
qgsmaptoolextraitem.h:84
QgsMapToolExtraItemBase::mState
State mState
Definition
qgsmaptoolextraitem.h:85
QgsMapToolExtraItemBase::State
State
Map tool state.
Definition
qgsmaptoolextraitem.h:60
QgsMapToolExtraItemBase::SelectFeature
@ SelectFeature
User needs to select a feature.
Definition
qgsmaptoolextraitem.h:61
QgsMapToolExtraItemBase::FeatureSelected
@ FeatureSelected
User has selected a feature.
Definition
qgsmaptoolextraitem.h:62
QgsMapToolExtraItemBase::mLayer
QPointer< QgsVectorLayer > mLayer
Definition
qgsmaptoolextraitem.h:81
QgsMapToolExtraItemBase::mSymbolLayer
QgsTemplatedLineSymbolLayerBase * mSymbolLayer
Definition
qgsmaptoolextraitem.h:82
QgsMapToolExtraItemBase::QgsMapToolExtraItemBase
QgsMapToolExtraItemBase(QgsMapCanvas *canvas, QgsVectorLayer *layer, QgsTemplatedLineSymbolLayerBase *symbolLayer, QgsPropertyOverrideButton *propertyButton)
Constructor.
Definition
qgsmaptoolextraitem.cpp:91
QgsMapToolExtraItemBase::mExtraItems
std::vector< QObjectUniquePtr< QgsExtraItemRubberBand > > mExtraItems
Definition
qgsmaptoolextraitem.h:86
QgsMapToolExtraItemBase::mExtraItemsFieldIndex
int mExtraItemsFieldIndex
Definition
qgsmaptoolextraitem.h:83
QgsMapToolExtraItemBase::mPropertyButton
QgsPropertyOverrideButton * mPropertyButton
Definition
qgsmaptoolextraitem.h:87
QgsMapToolExtraItemBase::TestQgsMapToolExtraItem
friend class TestQgsMapToolExtraItem
Definition
qgsmaptoolextraitem.h:89
QgsMapToolModifyExtraItems
Map tool to select and modify extra items for a giving vector layer and symbol layer.
Definition
qgsmaptoolextraitem.h:136
QgsMapToolModifyExtraItems::QgsMapToolModifyExtraItems
QgsMapToolModifyExtraItems(QgsMapCanvas *canvas, QgsVectorLayer *layer, QgsTemplatedLineSymbolLayerBase *symbolLayer, QgsPropertyOverrideButton *propertyButton)
Constructor.
Definition
qgsmaptoolextraitem.cpp:439
QgsMapToolModifyExtraItems::attemptRotateBy
void attemptRotateBy(QGraphicsItem *item, double deltaDegree, double deltaCenterX, double deltaCenterY)
Attempt to rotate item by deltaDegree around its center.
Definition
qgsmaptoolextraitem.cpp:765
QgsMapToolModifyExtraItems::attemptMoveBy
void attemptMoveBy(QGraphicsItem *item, double deltaX, double deltaY)
Attempt to move item by deltaX horizontally and deltaY vertically.
Definition
qgsmaptoolextraitem.cpp:758
QgsMapToolModifyExtraItems::selectedItems
QList< QGraphicsItem * > selectedItems() const
Returns currently selected items.
Definition
qgsmaptoolextraitem.cpp:459
QgsMapToolModifyExtraItems::TestQgsMapToolExtraItem
friend class TestQgsMapToolExtraItem
Definition
qgsmaptoolextraitem.h:252
QgsMapToolModifyExtraItems::selectedItemsChanged
void selectedItemsChanged()
Emitted whenever selected items has changed.
QgsMapTool::layer
QgsMapLayer * layer(const QString &id)
Returns the map layer with the matching ID, or nullptr if no layers could be found.
Definition
qgsmaptool.cpp:95
QgsMapTool::canvas
QgsMapCanvas * canvas() const
returns pointer to the tool's map canvas
Definition
qgsmaptool.cpp:236
QgsMapTool::QgsMapTool
QgsMapTool(QgsMapCanvas *canvas)
Constructor takes a map canvas as a parameter.
Definition
qgsmaptool.cpp:39
QgsMapTool::mCanvas
QPointer< QgsMapCanvas > mCanvas
The pointer to the map canvas.
Definition
qgsmaptool.h:403
QgsMapTool::QgsMapCanvas
friend class QgsMapCanvas
Definition
qgsmaptool.h:423
QgsMapTool::canvasPressEvent
virtual void canvasPressEvent(QgsMapMouseEvent *e)
Mouse press event for overriding. Default implementation does nothing.
Definition
qgsmaptool.cpp:193
QgsMapTool::canvasMoveEvent
virtual void canvasMoveEvent(QgsMapMouseEvent *e)
Mouse move event for overriding. Default implementation does nothing.
Definition
qgsmaptool.cpp:183
QgsMapTool::keyPressEvent
virtual void keyPressEvent(QKeyEvent *e)
Key event for overriding. Default implementation does nothing.
Definition
qgsmaptool.cpp:208
QgsMapTool::canvasReleaseEvent
virtual void canvasReleaseEvent(QgsMapMouseEvent *e)
Mouse release event for overriding. Default implementation does nothing.
Definition
qgsmaptool.cpp:198
QgsMapTool::activate
virtual void activate()
called when set as currently active map tool
Definition
qgsmaptool.cpp:105
QgsMapTool::deactivate
virtual void deactivate()
called when map tool is being deactivated
Definition
qgsmaptool.cpp:121
QgsPointXY
Represents a 2D point.
Definition
qgspointxy.h:62
QgsPropertyOverrideButton
A button for controlling property overrides which may apply to a widget.
Definition
qgspropertyoverridebutton.h:50
QgsTemplatedLineSymbolLayerBase
Base class for templated line symbols, e.g.
Definition
qgslinesymbollayer.h:555
QgsVectorLayer
Represents a vector layer which manages a vector based dataset.
Definition
qgsvectorlayer.h:414
FID_NULL
#define FID_NULL
Definition
qgsfeatureid.h:33
QgsFeatureId
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition
qgsfeatureid.h:32
qgsgraphicsviewmousehandles.h
qgsmapcanvas.h
qgsmaptool.h
qgspropertyoverridebutton.h
qgsrubberband.h
qobjectuniqueptr.h
Generated on
for QGIS API Documentation by
1.17.0