QGIS API Documentation 3.34.0-Prizren (ffbdd678812)
Loading...
Searching...
No Matches
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; invalidateCache(); }
144
150 void setVAlign( Qt::AlignmentFlag alignment ) { mVAlignment = alignment; invalidateCache(); }
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 void setFrameEnabled( bool drawFrame ) override;
215 void setFrameStrokeWidth( QgsLayoutMeasurement strokeWidth ) override;
216
222 QgsTextFormat textFormat() const;
223
229 void setTextFormat( const QgsTextFormat &format );
230
231 public slots:
232
233 void refresh() override;
234
241 void convertToStaticText();
242
243 protected:
244 void draw( QgsLayoutItemRenderContext &context ) override;
245 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
246 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
247
248 private slots:
249
250 void refreshExpressionContext();
252 void updateBoundingRect();
253
254 private:
255 bool mFirstRender = true;
256
257 // Text
258 QString mText;
259
260 Mode mMode = ModeFont;
261 double mHtmlUnitsToLayoutUnits = 1.0;
262 double htmlUnitsToLayoutUnits(); //calculate scale factor
263
265 void itemShiftAdjustSize( double newWidth, double newHeight, double &xShift, double &yShift ) const;
266
268 void contentChanged();
269
270 QgsTextFormat mFormat;
271
273 double mMarginX = 0.0;
275 double mMarginY = 0.0;
276
278 Qt::AlignmentFlag mHAlignment = Qt::AlignLeft;
279
281 Qt::AlignmentFlag mVAlignment = Qt::AlignTop;
282
284 void replaceDateText( QString &text ) const;
285
287 QFont createDefaultFont() const;
288
290 QUrl createStylesheetUrl() const;
291
293 QString createStylesheet() const;
294
295 std::unique_ptr< QgsDistanceArea > mDistanceArea;
296
297 QRectF mCurrentRectangle;
298
299 friend class QgsLayoutItemHtml;
300};
301
302#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.
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 void invalidateCache()
Forces a deferred update of any cached image the item uses.
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.
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