QGIS API Documentation 3.27.0-Master (9c08adf5ef)
qgscalloutwidget.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscalloutwidget.h
3 ---------------------
4 begin : July 2019
5 copyright : (C) 2019 by Nyall Dawson
6 email : nyall dot dawson at gmail 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#ifndef QGSCALLOUTWIDGET_H
16#define QGSCALLOUTWIDGET_H
17
19#include "qgis_sip.h"
21#include "qgscallout.h"
22#include <QWidget>
23#include <QStandardItemModel>
24
25class QgsVectorLayer;
26class QgsMapCanvas;
27
34class GUI_EXPORT QgsCalloutWidget : public QWidget, protected QgsExpressionContextGenerator
35{
36 Q_OBJECT
37
38 public:
39
45 QgsCalloutWidget( QWidget *parent SIP_TRANSFERTHIS, QgsVectorLayer *vl = nullptr )
46 : QWidget( parent )
47 , mVectorLayer( vl )
48 {}
49
54 virtual void setCallout( QgsCallout *callout ) = 0;
55
61 virtual QgsCallout *callout() = 0;
62
68 virtual void setContext( const QgsSymbolWidgetContext &context );
69
75
79 const QgsVectorLayer *vectorLayer() const { return mVectorLayer; }
80
85
86 protected:
87
94
96
97 private:
98 QgsVectorLayer *mVectorLayer = nullptr;
99
100 QgsMapCanvas *mMapCanvas = nullptr;
101
102 signals:
103
108 void changed();
109
110 private slots:
111 void updateDataDefinedProperty();
112
113 void createAuxiliaryField();
114
115 private:
116 QgsSymbolWidgetContext mContext;
117};
118
119
121
122#include "ui_widget_simplelinecallout.h"
123
125
126#ifndef SIP_RUN
128
129class GUI_EXPORT QgsSimpleLineCalloutWidget : public QgsCalloutWidget, private Ui::WidgetSimpleLineCallout
130{
131 Q_OBJECT
132
133 public:
134
135 QgsSimpleLineCalloutWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
136
137 static QgsCalloutWidget *create( QgsVectorLayer *vl ) SIP_FACTORY { return new QgsSimpleLineCalloutWidget( vl ); }
138
139 void setCallout( QgsCallout *callout ) override;
140
141 QgsCallout *callout() override;
142
143 void setGeometryType( QgsWkbTypes::GeometryType type ) override;
144
145 private slots:
146
147 void minimumLengthChanged();
148 void minimumLengthUnitWidgetChanged();
149 void offsetFromAnchorUnitWidgetChanged();
150 void offsetFromAnchorChanged();
151 void offsetFromLabelUnitWidgetChanged();
152 void offsetFromLabelChanged();
153 void lineSymbolChanged();
154 void mAnchorPointComboBox_currentIndexChanged( int index );
155 void mLabelAnchorPointComboBox_currentIndexChanged( int index );
156 void mCalloutBlendComboBox_currentIndexChanged( int index );
157 void drawToAllPartsToggled( bool active );
158
159 private:
160 std::unique_ptr< QgsSimpleLineCallout > mCallout;
161
162};
163
164class GUI_EXPORT QgsManhattanLineCalloutWidget : public QgsSimpleLineCalloutWidget
165{
166 Q_OBJECT
167
168 public:
169
170 QgsManhattanLineCalloutWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
171
172 static QgsCalloutWidget *create( QgsVectorLayer *vl ) SIP_FACTORY { return new QgsManhattanLineCalloutWidget( vl ); }
173
174};
175
176
178
179#include "ui_widget_curvedlinecallout.h"
180
183
184class GUI_EXPORT QgsCurvedLineCalloutWidget : public QgsCalloutWidget, private Ui::WidgetCurvedLineCallout
185{
186 Q_OBJECT
187
188 public:
189
190 QgsCurvedLineCalloutWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
191
192 static QgsCalloutWidget *create( QgsVectorLayer *vl ) SIP_FACTORY { return new QgsCurvedLineCalloutWidget( vl ); }
193
194 void setCallout( QgsCallout *callout ) override;
195
196 QgsCallout *callout() override;
197
198 void setGeometryType( QgsWkbTypes::GeometryType type ) override;
199
200 private slots:
201
202 void minimumLengthChanged();
203 void minimumLengthUnitWidgetChanged();
204 void offsetFromAnchorUnitWidgetChanged();
205 void offsetFromAnchorChanged();
206 void offsetFromLabelUnitWidgetChanged();
207 void offsetFromLabelChanged();
208 void lineSymbolChanged();
209 void mAnchorPointComboBox_currentIndexChanged( int index );
210 void mLabelAnchorPointComboBox_currentIndexChanged( int index );
211 void mCalloutBlendComboBox_currentIndexChanged( int index );
212 void drawToAllPartsToggled( bool active );
213
214 private:
215 std::unique_ptr< QgsCurvedLineCallout > mCallout;
216
217};
218
219
221
222#include "ui_widget_ballooncallout.h"
223
225
226class GUI_EXPORT QgsBalloonCalloutWidget : public QgsCalloutWidget, private Ui::WidgetBalloonCallout
227{
228 Q_OBJECT
229
230 public:
231
232 QgsBalloonCalloutWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
233
234 static QgsCalloutWidget *create( QgsVectorLayer *vl ) SIP_FACTORY { return new QgsBalloonCalloutWidget( vl ); }
235
236 void setCallout( QgsCallout *callout ) override;
237
238 QgsCallout *callout() override;
239
240 void setGeometryType( QgsWkbTypes::GeometryType type ) override;
241
242 private slots:
243
244 void offsetFromAnchorUnitWidgetChanged();
245 void offsetFromAnchorChanged();
246 void fillSymbolChanged();
247 void mAnchorPointComboBox_currentIndexChanged( int index );
248 void mCalloutBlendComboBox_currentIndexChanged( int index );
249
250 private:
251 std::unique_ptr< QgsBalloonCallout > mCallout;
252
253};
254
255#endif
257
258#endif // QGSCALLOUTWIDGET_H
A cartoon talking bubble callout style.
Definition: qgscallout.h:891
Base class for widgets which allow control over the properties of callouts.
QgsSymbolWidgetContext context() const
Returns the context in which the symbol widget is shown, e.g., the associated map canvas and expressi...
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
const QgsVectorLayer * vectorLayer() const
Returns the vector layer associated with the widget.
virtual QgsCallout * callout()=0
Returns the callout defined by the current settings in the widget.
virtual void setCallout(QgsCallout *callout)=0
Sets the callout to show in the widget.
virtual void setGeometryType(QgsWkbTypes::GeometryType type)=0
Sets the geometry type of the features to customize the widget accordingly.
void changed()
Should be emitted whenever configuration changes happened on this symbol layer configuration.
void registerDataDefinedButton(QgsPropertyOverrideButton *button, QgsCallout::Property key)
Registers a data defined override button.
virtual void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the symbol widget is shown, e.g., the associated map canvas and expression ...
QgsCalloutWidget(QWidget *parent, QgsVectorLayer *vl=nullptr)
Constructor for QgsCalloutWidget.
Abstract base class for callout renderers.
Definition: qgscallout.h:53
Property
Data definable properties.
Definition: qgscallout.h:84
Draws curved lines as callouts.
Definition: qgscallout.h:791
Abstract interface for generating an expression context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:90
A button for controlling property overrides which may apply to a widget.
A simple direct line callout style.
Definition: qgscallout.h:511
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Represents a vector layer which manages a vector based data sets.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:141
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_FACTORY
Definition: qgis_sip.h:76