33 #include <QDomDocument> 34 #include <QDomElement> 39 , mLegendModel( new
QgsLegendModel( layout->project()->layerTreeRoot() ) )
41 #if 0 //no longer required? 42 connect( &layout->atlasComposition(), &QgsAtlasComposition::renderEnded,
this, &QgsLayoutItemLegend::onAtlasEnded );
70 if ( mFilterAskedForUpdate )
72 mFilterAskedForUpdate =
false;
73 doUpdateFilterByMap();
76 int dpi = painter->device()->logicalDpiX();
77 double dotsPerMM = dpi / 25.4;
89 QSizeF mapSizePixels = QSizeF( mMap->rect().width() * dotsPerMM, mMap->rect().height() * dotsPerMM );
95 mInitialMapScaleCalculated =
true;
98 legendRenderer.
setLegendSize( mForceResize && mSizeToContents ? QSize() : rect().size() );
101 if ( mSizeToContents )
103 QSizeF size = legendRenderer.minimumSize();
106 mForceResize =
false;
108 QRectF targetRect = QRectF( pos().x(), pos().y(), size.width(), size.height() );
111 else if ( size.height() > rect().height() || size.width() > rect().width() )
114 QRectF targetRect = QRectF( pos().x(), pos().y(), rect().width(), rect().height() );
115 if ( size.height() > targetRect.height() )
116 targetRect.setHeight( size.height() );
117 if ( size.width() > rect().width() )
118 targetRect.setWidth( size.width() );
129 if ( !mMapUuid.isEmpty() )
131 setLinkedMap( qobject_cast< QgsLayoutItemMap * >(
mLayout->itemByUuid( mMapUuid,
true ) ) );
149 painter->setPen( QPen( QColor( 0, 0, 0 ) ) );
151 if ( !mSizeToContents )
154 QRectF thisPaintRect = QRectF( 0, 0, rect().width(), rect().height() );
155 painter->setClipRect( thisPaintRect );
159 legendRenderer.
setLegendSize( mSizeToContents ? QSize() : rect().size() );
161 legendRenderer.drawLegend( painter );
168 if ( !mSizeToContents )
171 if ( !mInitialMapScaleCalculated )
182 QgsDebugMsg( QString(
"width = %1 height = %2" ).arg( size.width() ).arg( size.height() ) );
183 if ( size.isValid() )
193 mSizeToContents = enabled;
198 return mSizeToContents;
201 void QgsLayoutItemLegend::setCustomLayerTree(
QgsLayerTree *rootGroup )
203 mLegendModel->setRootGroup( rootGroup ? rootGroup : (
mLayout ?
mLayout->project()->layerTreeRoot() : nullptr ) );
205 mCustomLayerTree.reset( rootGroup );
213 setCustomLayerTree( autoUpdate ?
nullptr :
mLayout->project()->layerTreeRoot()->clone() );
218 void QgsLayoutItemLegend::nodeCustomPropertyChanged(
QgsLayerTreeNode *,
const QString & )
230 return !mCustomLayerTree;
235 mLegendFilterByMap = enabled;
244 if (
mLayout &&
id().isEmpty() )
247 mLayout->itemsModel()->updateItemDisplayName(
this );
267 return mSettings.
rstyle( s );
272 return mSettings.
style( s );
450 void QgsLayoutItemLegend::synchronizeWithModel()
466 legendElem.setAttribute( QStringLiteral(
"title" ), mTitle );
467 legendElem.setAttribute( QStringLiteral(
"titleAlignment" ), QString::number( static_cast< int >( mSettings.
titleAlignment() ) ) );
468 legendElem.setAttribute( QStringLiteral(
"columnCount" ), QString::number( mColumnCount ) );
469 legendElem.setAttribute( QStringLiteral(
"splitLayer" ), QString::number( mSettings.
splitLayer() ) );
470 legendElem.setAttribute( QStringLiteral(
"equalColumnWidth" ), QString::number( mSettings.
equalColumnWidth() ) );
472 legendElem.setAttribute( QStringLiteral(
"boxSpace" ), QString::number( mSettings.
boxSpace() ) );
473 legendElem.setAttribute( QStringLiteral(
"columnSpace" ), QString::number( mSettings.
columnSpace() ) );
475 legendElem.setAttribute( QStringLiteral(
"symbolWidth" ), QString::number( mSettings.
symbolSize().width() ) );
476 legendElem.setAttribute( QStringLiteral(
"symbolHeight" ), QString::number( mSettings.
symbolSize().height() ) );
477 legendElem.setAttribute( QStringLiteral(
"lineSpacing" ), QString::number( mSettings.
lineSpacing() ) );
479 legendElem.setAttribute( QStringLiteral(
"rasterBorder" ), mSettings.
drawRasterStroke() );
481 legendElem.setAttribute( QStringLiteral(
"rasterBorderWidth" ), QString::number( mSettings.
rasterStrokeWidth() ) );
483 legendElem.setAttribute( QStringLiteral(
"wmsLegendWidth" ), QString::number( mSettings.
wmsLegendSize().width() ) );
484 legendElem.setAttribute( QStringLiteral(
"wmsLegendHeight" ), QString::number( mSettings.
wmsLegendSize().height() ) );
485 legendElem.setAttribute( QStringLiteral(
"wrapChar" ), mSettings.
wrapChar() );
486 legendElem.setAttribute( QStringLiteral(
"fontColor" ), mSettings.
fontColor().name() );
488 legendElem.setAttribute( QStringLiteral(
"resizeToContents" ), mSizeToContents );
492 legendElem.setAttribute( QStringLiteral(
"map_uuid" ), mMap->
uuid() );
495 QDomElement legendStyles = doc.createElement( QStringLiteral(
"styles" ) );
496 legendElem.appendChild( legendStyles );
504 if ( mCustomLayerTree )
507 mCustomLayerTree->writeXml( legendElem, context );
510 if ( mLegendFilterByMap )
512 legendElem.setAttribute( QStringLiteral(
"legendFilterByMap" ), QStringLiteral(
"1" ) );
514 legendElem.setAttribute( QStringLiteral(
"legendFilterByAtlas" ), mFilterOutAtlas ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) );
522 mTitle = itemElem.attribute( QStringLiteral(
"title" ) );
524 if ( !itemElem.attribute( QStringLiteral(
"titleAlignment" ) ).isEmpty() )
526 mSettings.
setTitleAlignment( static_cast< Qt::AlignmentFlag >( itemElem.attribute( QStringLiteral(
"titleAlignment" ) ).toInt() ) );
528 int colCount = itemElem.attribute( QStringLiteral(
"columnCount" ), QStringLiteral(
"1" ) ).toInt();
529 if ( colCount < 1 ) colCount = 1;
530 mColumnCount = colCount;
532 mSettings.
setSplitLayer( itemElem.attribute( QStringLiteral(
"splitLayer" ), QStringLiteral(
"0" ) ).toInt() == 1 );
533 mSettings.
setEqualColumnWidth( itemElem.attribute( QStringLiteral(
"equalColumnWidth" ), QStringLiteral(
"0" ) ).toInt() == 1 );
535 QDomNodeList stylesNodeList = itemElem.elementsByTagName( QStringLiteral(
"styles" ) );
536 if ( !stylesNodeList.isEmpty() )
538 QDomNode stylesNode = stylesNodeList.at( 0 );
539 for (
int i = 0; i < stylesNode.childNodes().size(); i++ )
541 QDomElement styleElem = stylesNode.childNodes().at( i ).toElement();
543 style.
readXml( styleElem, doc );
544 QString name = styleElem.attribute( QStringLiteral(
"name" ) );
558 fontClr.setNamedColor( itemElem.attribute( QStringLiteral(
"fontColor" ), QStringLiteral(
"#000000" ) ) );
562 mSettings.
setBoxSpace( itemElem.attribute( QStringLiteral(
"boxSpace" ), QStringLiteral(
"2.0" ) ).toDouble() );
563 mSettings.
setColumnSpace( itemElem.attribute( QStringLiteral(
"columnSpace" ), QStringLiteral(
"2.0" ) ).toDouble() );
565 mSettings.
setSymbolSize( QSizeF( itemElem.attribute( QStringLiteral(
"symbolWidth" ), QStringLiteral(
"7.0" ) ).toDouble(), itemElem.attribute( QStringLiteral(
"symbolHeight" ), QStringLiteral(
"14.0" ) ).toDouble() ) );
566 mSettings.
setWmsLegendSize( QSizeF( itemElem.attribute( QStringLiteral(
"wmsLegendWidth" ), QStringLiteral(
"50" ) ).toDouble(), itemElem.attribute( QStringLiteral(
"wmsLegendHeight" ), QStringLiteral(
"25" ) ).toDouble() ) );
567 mSettings.
setLineSpacing( itemElem.attribute( QStringLiteral(
"lineSpacing" ), QStringLiteral(
"1.0" ) ).toDouble() );
569 mSettings.
setDrawRasterStroke( itemElem.attribute( QStringLiteral(
"rasterBorder" ), QStringLiteral(
"1" ) ) != QLatin1String(
"0" ) );
571 mSettings.
setRasterStrokeWidth( itemElem.attribute( QStringLiteral(
"rasterBorderWidth" ), QStringLiteral(
"0" ) ).toDouble() );
573 mSettings.
setWrapChar( itemElem.attribute( QStringLiteral(
"wrapChar" ) ) );
575 mSizeToContents = itemElem.attribute( QStringLiteral(
"resizeToContents" ), QStringLiteral(
"1" ) ) != QLatin1String(
"0" );
578 mLegendFilterByMap = itemElem.attribute( QStringLiteral(
"legendFilterByMap" ), QStringLiteral(
"0" ) ).toInt();
581 if ( !itemElem.attribute( QStringLiteral(
"map_uuid" ) ).isEmpty() )
583 mMapUuid = itemElem.attribute( QStringLiteral(
"map_uuid" ) );
586 setupMapConnections( mMap,
false );
589 mFilterOutAtlas = itemElem.attribute( QStringLiteral(
"legendFilterByAtlas" ), QStringLiteral(
"0" ) ).toInt();
592 QDomElement layerTreeElem = itemElem.firstChildElement( QStringLiteral(
"layer-tree" ) );
593 if ( layerTreeElem.isNull() )
594 layerTreeElem = itemElem.firstChildElement( QStringLiteral(
"layer-tree-group" ) );
596 if ( !layerTreeElem.isNull() )
600 tree->resolveReferences(
mLayout->project(), true );
601 setCustomLayerTree( tree.release() );
604 setCustomLayerTree(
nullptr );
611 if ( !
id().isEmpty() )
617 QString text = mSettings.
title();
618 if ( text.isEmpty() )
620 return tr(
"<Legend>" );
622 if ( text.length() > 25 )
624 return tr(
"%1…" ).arg( text.left( 25 ) );
633 void QgsLayoutItemLegend::setupMapConnections(
QgsLayoutItemMap *map,
bool connectSlots )
640 disconnect( map, &QObject::destroyed,
this, &QgsLayoutItemLegend::invalidateCurrentMap );
647 connect( map, &QObject::destroyed,
this, &QgsLayoutItemLegend::invalidateCurrentMap );
658 setupMapConnections( mMap,
false );
665 setupMapConnections( mMap,
true );
671 void QgsLayoutItemLegend::invalidateCurrentMap()
680 bool forceUpdate =
false;
696 if ( ok && cols >= 0 )
712 void QgsLayoutItemLegend::updateFilterByMapAndRedraw()
717 void QgsLayoutItemLegend::mapLayerStyleOverridesChanged()
723 if ( mLegendFilterByMap )
733 Q_FOREACH (
QgsLayerTreeLayer *nodeLayer, mLegendModel->rootGroup()->findLayers() )
734 mLegendModel->refreshLayerLegend( nodeLayer );
746 mFilterAskedForUpdate =
true;
752 void QgsLayoutItemLegend::doUpdateFilterByMap()
757 mLegendModel->setLayerStyleOverrides( QMap<QString, QString>() );
762 if ( mMap && ( mLegendFilterByMap || filterByExpression || mInAtlas ) )
764 int dpi =
mLayout->renderContext().dpi();
768 QSizeF size( requestRectangle.
width(), requestRectangle.
height() );
776 filterPolygon =
mLayout->reportContext().currentGeometry( mMap->
crs() );
778 mLegendModel->setLegendFilter( &ms, mInAtlas || mLegendFilterByMap, filterPolygon,
true );
781 mLegendModel->setLegendFilterByMap(
nullptr );
788 mFilterOutAtlas = doFilter;
793 return mFilterOutAtlas;
796 void QgsLayoutItemLegend::onAtlasFeature()
798 if ( !
mLayout->reportContext().feature().isValid() )
800 mInAtlas = mFilterOutAtlas;
804 void QgsLayoutItemLegend::onAtlasEnded()
826 if (
QgsLayerTree::isLayer( node ) && ( role == Qt::DisplayRole || role == Qt::EditRole ) && !node->customProperty( QStringLiteral(
"legend/title-label" ) ).isNull() )
829 QString name = node->customProperty( QStringLiteral(
"legend/title-label" ) ).toString();
830 if ( nodeLayer->
customProperty( QStringLiteral(
"showFeatureCount" ), 0 ).toInt() && role == Qt::DisplayRole )
834 name += QStringLiteral(
" [%1]" ).arg( vlayer->
featureCount() );
void setTitleAlignment(Qt::AlignmentFlag alignment)
Sets the alignment of the legend title.
void setColumnSpace(double spacing)
Sets the legend column spacing.
bool splitLayer() const
Returns whether the legend items from a single layer can be split over multiple columns.
void setWrapChar(const QString &t)
The class is used as a container of context for various read/write operations on other objects...
void setEqualColumnWidth(bool equalize)
Sets whether column widths should be equalized.
void setLegendSize(QSizeF s)
Set the preferred resulting legend size.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
void setFontColor(const QColor &color)
Sets the legend font color.
void setLegendFilterOutAtlas(bool doFilter)
When set to true, during an atlas rendering, it will filter out legend elements where features are ou...
static QgsLayerTreeLayer * toLayer(QgsLayerTreeNode *node)
Cast node to a layer.
A rectangle specified with double values.
void setTitle(const QString &title)
Sets the legend title.
void setEqualColumnWidth(bool s)
double lineSpacing() const
Returns the spacing in-between lines in layout units.
double boxSpace() const
Returns the legend box space.
Item model implementation based on layer tree model for layout legend.
double columnSpace() const
Returns the legend column spacing.
void setBoxSpace(double s)
void setMmPerMapUnit(double mmPerMapUnit)
void setSplitLayer(bool enabled)
Sets whether the legend items from a single layer can be split over multiple columns.
QColor rasterStrokeColor() const
Returns the stroke color for the stroke drawn around raster symbol items.
Base class for graphical items within a QgsLayout.
void setSymbolWidth(double width)
Sets the legend symbol width.
bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const override
Stores item state within an XML DOM element.
void paint(QPainter *painter, const QStyleOptionGraphicsItem *itemStyle, QWidget *pWidget) override
int type() const override
void setSymbolSize(QSizeF s)
QgsMapSettings mapSettings(const QgsRectangle &extent, QSizeF size, double dpi, bool includeLayerSettings) const
Return map settings that will be used for drawing of the map.
void extentChanged()
Is emitted when the map's extent changes.
QgsLayoutSize sizeWithUnits() const
Returns the item's current size, including units.
QFont font() const
The font for this style.
Composer legend components style.
void updateFilterByMap(bool redraw=true)
Updates the legend content when filtered by map.
A geometry is the spatial representation of a feature.
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
QString title() const
Returns the legend title.
void setStyle(QgsLegendStyle::Style component, const QgsLegendStyle &style)
Sets the style of component to style for the legend.
bool drawRasterStroke() const
Returns whether a stroke will be drawn around raster symbol items.
void setLegendFilterByMapEnabled(bool enabled)
Set whether legend items should be filtered to show just the ones visible in the associated map...
bool resizeToContents() const
Returns whether the legend should automatically resize to fit its contents.
double rasterStrokeWidth() const
Returns the stroke width (in layout units) for the stroke drawn around raster symbol items...
int columnCount() const
Returns the legend column count.
Qt::AlignmentFlag titleAlignment() const
Returns the alignment of the legend title.
bool equalColumnWidth() const
Returns whether column widths should be equalized.
QColor rasterStrokeColor() const
Returns the stroke color for the stroke drawn around raster symbol items.
Allow check boxes for legend nodes (if supported by layer's legend)
void setDrawRasterStroke(bool enabled)
Sets whether a stroke will be drawn around raster symbol items.
The QgsMapSettings class contains configuration for rendering of the map.
static QString encodeColor(const QColor &color)
QString displayName() const override
Get item display name.
The QgsLayerTreeModel class is model implementation for Qt item views framework.
QSizeF wmsLegendSize() const
QgsLegendStyle style(QgsLegendStyle::Style s) const
Returns style.
void adjustBoxSize()
Sets the legend's item bounds to fit the whole legend content.
QgsRectangle extent() const
Returns the current map extent.
Layout graphical items for displaying a map.
void setFont(const QFont &font)
The font for this style.
QgsPropertyCollection mDataDefinedProperties
const QgsLayout * layout() const
Returns the layout the object is attached to.
void draw(QgsLayoutItemRenderContext &context) override
Draws the item's contents using the specified item render context.
double symbolWidth() const
Returns the legend symbol width.
Namespace with helper functions for layer tree operations.
void finalizeRestoreFromXml() override
Called after all pending items have been restored from XML.
QColor fontColor() const
Returns the legend font color.
void paint(QPainter *painter, const QStyleOptionGraphicsItem *itemStyle, QWidget *pWidget) override
Handles preparing a paint surface for the layout item and painting the item's content.
double scale() const
Returns the calculated map scale.
long featureCount(const QString &legendKey) const
Number of features rendered with specified legend key.
double width() const
Returns the width of the rectangle.
static QgsLayerTreeModelLegendNode * index2legendNode(const QModelIndex &index)
Return legend node for given index.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void attemptSetSceneRect(const QRectF &rect, bool includesFrame=false)
Attempts to update the item's position and size to match the passed rect in layout coordinates...
void setMapScale(double scale)
Sets the legend map scale.
QgsRenderContext & renderContext()
Returns a reference to the context's render context.
double symbolHeight() const
Returns the legend symbol height.
QVariant data(const QModelIndex &index, int role) const override
QgsLegendStyle & rstyle(QgsLegendStyle::Style s)
Returns reference to modifiable legend style.
double rasterStrokeWidth() const
Returns the stroke width (in millimeters) for the stroke drawn around raster symbol items...
bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context) override
Sets item state from a DOM element.
double mapUnitsToLayoutUnits() const
Returns the conversion factor from map units to layout units.
QPointer< QgsLayout > mLayout
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer. Properties are stored in a map and saved in project file...
virtual void attemptResize(const QgsLayoutSize &size, bool includesFrame=false)
Attempts to resize the item to a specified target size.
void setRasterStrokeColor(const QColor &color)
Sets the stroke color for the stroke drawn around raster symbol items.
QgsLegendModel(QgsLayerTree *rootNode, QObject *parent=nullptr)
Construct the model based on the given layer tree.
void setTitle(const QString &t)
static bool isLayer(const QgsLayerTreeNode *node)
Check whether the node is a valid layer node.
This class is a base class for nodes in a layer tree.
void setRasterStrokeWidth(double width)
Sets the stroke width for the stroke drawn around raster symbol items.
void setMargin(Side side, double margin)
QgsLegendStyle style(QgsLegendStyle::Style s) const
Returns legend style.
QString id() const
Returns the item's ID name.
Qt::AlignmentFlag titleAlignment() const
Returns the alignment of the legend title.
QgsLayoutItemLegend(QgsLayout *layout)
Constructor for QgsLayoutItemLegend, with the specified parent layout.
void setLineSpacing(double spacing)
Sets the spacing in-between multiple lines.
QgsRectangle requestedExtent() const
Calculates the extent to request and the yShift of the top-left point in case of rotation.
void setFontColor(const QColor &c)
static bool hasLegendFilterExpression(const QgsLayerTreeGroup &group)
Test if one of the layers in a group has an expression filter.
void setColumnSpace(double s)
void setFlag(Flag f, bool on=true)
Enable or disable a model flag.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
void updateLegend()
Updates the model and all legend entries.
void setWrapString(const QString &string)
Sets the legend text wrapping string.
QSizeF minimumSize()
Run the layout algorithm and determine the size required for legend.
void setStyleFont(QgsLegendStyle::Style component, const QFont &font)
Sets the style font for a legend component.
void setResizeToContents(bool enabled)
Sets whether the legend should automatically resize to fit its contents.
virtual void redraw()
Triggers a redraw (update) of the item.
void setAutoUpdateModel(bool autoUpdate)
Sets whether the legend content should auto update to reflect changes in the project's layer tree...
void setColumnCount(int count)
Sets the legend column count.
QSizeF symbolSize() const
Contains settings and helpers relating to a render of a QgsLayoutItem.
void setLineSpacing(double s)
QgsMapLayer * layer() const
void readXml(const QDomElement &elem, const QDomDocument &doc)
static QgsLayoutItemLegend * create(QgsLayout *layout)
Returns a new legend item for the specified layout.
void refreshDataDefinedProperty(const QgsLayoutObject::DataDefinedProperty property=QgsLayoutObject::AllProperties) override
QString valueAsString(int key, const QgsExpressionContext &context, const QString &defaultString=QString(), bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a string...
void setWmsLegendSize(QSizeF s)
QgsLegendStyle & rstyle(QgsLegendStyle::Style s)
Returns reference to modifiable style.
void setUseAdvancedEffects(bool use)
void setLinkedMap(QgsLayoutItemMap *map)
Sets the map to associate with the legend.
QPainter * painter()
Returns the destination QPainter for the render operation.
QgsLayerTreeNode * index2node(const QModelIndex &index) const
Return layer tree node for given index.
QgsCoordinateReferenceSystem crs() const
Returns coordinate reference system used for rendering the map.
void setStyle(QgsLegendStyle::Style s, const QgsLegendStyle &style)
Enable advanced effects such as blend modes.
QString wrapString() const
Returns the legend text wrapping string.
static QgsLayerTree * readXml(QDomElement &element, const QgsReadWriteContext &context)
Load the layer tree from an XML element.
double wmsLegendHeight() const
Returns the WMS legend height.
bool equalColumnWidth() const
void setStyleMargin(QgsLegendStyle::Style component, double margin)
Set the margin for a legend component.
void setColumnCount(int c)
double columnSpace() const
virtual QString uuid() const
Returns the item identification string.
void setDrawRasterStroke(bool enabled)
Sets whether a stroke will be drawn around raster symbol items.
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
bool autoUpdateModel() const
Returns whether the legend content should auto update to reflect changes in the project's layer tree...
virtual void refreshDataDefinedProperty(const QgsLayoutObject::DataDefinedProperty property=QgsLayoutObject::AllProperties)
Refreshes a data defined property for the item by reevaluating the property's value and redrawing the...
void setRasterStrokeWidth(double width)
Sets the stroke width for the stroke drawn around raster symbol items.
void writeXml(const QString &name, QDomElement &elem, QDomDocument &doc) const
void setWmsLegendHeight(double height)
Sets the WMS legend height.
void layerStyleOverridesChanged()
Emitted when layer style overrides are changed...
void setWmsLegendWidth(double width)
Sets the WMS legend width.
Flags flags() const
Return OR-ed combination of model flags.
A layout item subclass for map legends.
void customPropertyChanged(QgsLayerTreeNode *node, const QString &key)
Emitted when a custom property of a node within the tree has been changed or removed.
void setSymbolHeight(double height)
Sets the legend symbol height.
double lineSpacing() const
This class provides a method of storing sizes, consisting of a width and height, for use in QGIS layo...
void setBoxSpace(double space)
Sets the legend box space.
void changed()
Emitted when the object's properties change.
bool legendFilterOutAtlas() const
Returns whether to filter out legend elements outside of the current atlas feature.
double scaleFactor() const
Returns the scaling factor for the render to convert painter units to physical sizes.
Represents a vector layer which manages a vector based data sets.
DataDefinedProperty
Data defined properties for different item types.
int valueAsInt(int key, const QgsExpressionContext &context, int defaultValue=0, bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as an integer...
void setRasterStrokeColor(const QColor &color)
Sets the stroke color for the stroke drawn around raster symbol items.
void setTitleAlignment(Qt::AlignmentFlag alignment)
Sets the alignment of the legend title.
void refresh() override
Refreshes the item, causing a recalculation of any property overrides and recalculation of its positi...
bool drawRasterStroke() const
Returns whether a stroke will be drawn around raster symbol items.
QIcon icon() const override
Returns the item's icon.
double wmsLegendWidth() const
Returns the WMS legend width.
Allow reordering with drag'n'drop.
void setSplitLayer(bool s)
static QColor decodeColor(const QString &str)
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
double height() const
Returns the height of the rectangle.
Layer tree node points to a map layer.
The QgsLegendRenderer class handles automatic layout and rendering of legend.
QMap< QString, QString > layerStyleOverrides() const
Returns stored overrides of styles for layers.
QFont styleFont(QgsLegendStyle::Style component) const
Returns the font settings for a legend component.