QGIS API Documentation 3.31.0-Master (9f23a2c1dc)
qgslayoutitemlabel.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutitemlabel.h
3 -------------------
4 begin : October 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot 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#ifndef QGSLAYOUTITEMLABEL_H
18#define QGSLAYOUTITEMLABEL_H
19
20#include "qgis_core.h"
21#include "qgslayoutitem.h"
22#include "qgstextformat.h"
23#include <QFont>
24#include <QUrl>
25
26class QgsVectorLayer;
27class QgsFeature;
28class QgsDistanceArea;
29
35class CORE_EXPORT QgsLayoutItemLabel: public QgsLayoutItem
36{
37 Q_OBJECT
38
39 public:
40
42 enum Mode
43 {
46 };
47
52
58 static QgsLayoutItemLabel *create( QgsLayout *layout ) SIP_FACTORY;
59
60 int type() const override;
61 QIcon icon() const override;
62 //Overridden to contain part of label's text
63 QString displayName() const override;
64
69 void adjustSizeToText();
70
75 QSizeF sizeForText() const;
76
82 QString text() const { return mText; }
83
88 void setText( const QString &text );
89
95 QString currentText() const;
96
101 Mode mode() const { return mMode; }
102
108 void setMode( Mode mode );
109
115 Q_DECL_DEPRECATED QFont font() const SIP_DEPRECATED;
116
122 Q_DECL_DEPRECATED void setFont( const QFont &font ) SIP_DEPRECATED;
123
129 Qt::AlignmentFlag vAlign() const { return mVAlignment; }
130
136 Qt::AlignmentFlag hAlign() const { return mHAlignment; }
137
143 void setHAlign( Qt::AlignmentFlag alignment ) { mHAlignment = alignment; }
144
150 void setVAlign( Qt::AlignmentFlag alignment ) { mVAlignment = alignment; }
151
158 double marginX() const { return mMarginX; }
159
166 double marginY() const { return mMarginY; }
167
179 void setMargin( double margin );
180
187 void setMarginX( double margin );
188
195 void setMarginY( double margin );
196
202 Q_DECL_DEPRECATED void setFontColor( const QColor &color ) SIP_DEPRECATED { mFormat.setColor( color ); }
203
209 Q_DECL_DEPRECATED QColor fontColor() const SIP_DEPRECATED { return mFormat.color(); }
210
211 // In case of negative margins, the bounding rect may be larger than the
212 // label's frame
213 QRectF boundingRect() const override;
214
215 // Reimplemented to call prepareGeometryChange after toggling frame
216 void setFrameEnabled( bool drawFrame ) override;
217
218 // Reimplemented to call prepareGeometryChange after changing stroke width
219 void setFrameStrokeWidth( QgsLayoutMeasurement strokeWidth ) override;
220
221
227 QgsTextFormat textFormat() const;
228
234 void setTextFormat( const QgsTextFormat &format );
235
236 public slots:
237
238 void refresh() override;
239
246 void convertToStaticText();
247
248 protected:
249 void draw( QgsLayoutItemRenderContext &context ) override;
250 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
251 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
252
253 private slots:
254
255 void refreshExpressionContext();
256
257 private:
258 bool mFirstRender = true;
259
260 // Text
261 QString mText;
262
263 Mode mMode = ModeFont;
264 double mHtmlUnitsToLayoutUnits = 1.0;
265 double htmlUnitsToLayoutUnits(); //calculate scale factor
266
268 void itemShiftAdjustSize( double newWidth, double newHeight, double &xShift, double &yShift ) const;
269
271 void contentChanged();
272
273 QgsTextFormat mFormat;
274
276 double mMarginX = 0.0;
278 double mMarginY = 0.0;
279
281 Qt::AlignmentFlag mHAlignment = Qt::AlignLeft;
282
284 Qt::AlignmentFlag mVAlignment = Qt::AlignTop;
285
287 void replaceDateText( QString &text ) const;
288
290 QFont createDefaultFont() const;
291
293 QUrl createStylesheetUrl() const;
294
296 QString createStylesheet() const;
297
298 std::unique_ptr< QgsDistanceArea > mDistanceArea;
299
300 friend class QgsLayoutItemHtml;
301};
302
303#endif //QGSLAYOUTITEMLABEL_H
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
A layout multiframe subclass for HTML content.
A layout item subclass for text labels.
Mode mode() const
Returns the label's current mode.
void setHAlign(Qt::AlignmentFlag alignment)
Sets the horizontal alignment of the label.
Q_DECL_DEPRECATED QColor fontColor() const
Returns the label font color.
double marginX() const
Returns the horizontal margin between the edge of the frame and the label contents,...
double marginY() const
Returns the vertical margin between the edge of the frame and the label contents, in layout units.
QString text() const
Returns the label's preset text.
Q_DECL_DEPRECATED void setFontColor(const QColor &color)
Sets the label font color.
void setVAlign(Qt::AlignmentFlag alignment)
Sets for the vertical alignment of the label.
Qt::AlignmentFlag hAlign() const
Returns the horizontal alignment of the label.
@ ModeHtml
Label displays rendered HTML content.
@ ModeFont
Label displays text rendered using a single font.
Contains settings and helpers relating to a render of a QgsLayoutItem.
Definition: qgslayoutitem.h:44
Base class for graphical items within a QgsLayout.
virtual void setFrameStrokeWidth(QgsLayoutMeasurement width)
Sets the frame stroke width.
virtual QIcon icon() const
Returns the item's icon.
virtual bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const
Stores item state within an XML DOM element.
virtual void setFrameEnabled(bool drawFrame)
Sets whether this item has a frame drawn around it or not.
int type() const override
Returns a unique graphics item type identifier.
virtual QString displayName() const
Gets item display name.
virtual bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context)
Sets item state from a DOM element.
void refresh() override
Refreshes the item, causing a recalculation of any property overrides and recalculation of its positi...
virtual void draw(QgsLayoutItemRenderContext &context)=0
Draws the item's contents using the specified item render context.
This class provides a method of storing measurements for use in QGIS layouts using a variety of diffe...
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:50
The class is used as a container of context for various read/write operations on other objects.
Container for all settings relating to text rendering.
Definition: qgstextformat.h:41
Represents a vector layer which manages a vector based data sets.
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_FACTORY
Definition: qgis_sip.h:76