QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
QgsLayerTreeModelLegendNode Class Referenceabstract

An abstract interface for legend items returned from QgsMapLayerLegend implementation. More...

#include <qgslayertreemodellegendnode.h>

Inheritance diagram for QgsLayerTreeModelLegendNode:

Classes

struct  ItemContext
struct  ItemMetrics

Public Types

enum class  CustomRole : int { RuleKey = Qt::UserRole , ParentRuleKey , NodeType , IsDataDefinedSize }
 Legend node data roles. More...
enum  NodeTypes {
  SimpleLegend , SymbolLegend , RasterSymbolLegend , ImageLegend ,
  WmsLegend , DataDefinedSizeLegend , EmbeddedWidget , ColorRampLegend
}
 Types of legend nodes. More...

Public Slots

void checkAllItems ()
 Checks all checkable items belonging to the same layer as this node.
void toggleAllItems ()
 Toggle all checkable items belonging to the same layer as this node.
void uncheckAllItems ()
 Unchecks all checkable items belonging to the same layer as this node.

Signals

void dataChanged ()
 Emitted on internal data change so the layer tree model can forward the signal to views.
void sizeChanged ()
 Emitted when the size of this node changes.

Public Member Functions

virtual bool columnBreak () const
 Returns whether a forced column break should occur before the node.
virtual QVariant data (int role) const =0
 Returns data associated with the item. Must be implemented in derived class.
virtual ItemMetrics draw (const QgsLegendSettings &settings, ItemContext &ctx)
 Entry point called from QgsLegendRenderer to do the rendering.
virtual QSizeF drawSymbol (const QgsLegendSettings &settings, ItemContext *ctx, double itemHeight) const
 Draws symbol on the left side of the item.
virtual QSizeF drawSymbolText (const QgsLegendSettings &settings, ItemContext *ctx, QSizeF symbolSize) const
 Draws label on the right side of the item.
virtual QJsonObject exportSymbolToJson (const QgsLegendSettings &settings, const QgsRenderContext &context) const
 Adds a symbol in base64 string within a JSON object with the key "icon".
QJsonObject exportToJson (const QgsLegendSettings &settings, const QgsRenderContext &context)
 Entry point called from QgsLegendRenderer to do the rendering in a JSON object.
virtual Qt::ItemFlags flags () const
 Returns item flags associated with the item. Default implementation returns Qt::ItemIsEnabled.
virtual void invalidateMapBasedData ()
 Notification from model that information from associated map view has changed.
virtual bool isEmbeddedInParent () const
virtual bool isScaleOK (double scale) const
QgsLayerTreeLayerlayerNode () const
 Returns pointer to the parent layer node.
QgsLayerTreeModelmodel () const
 Returns pointer to model owning this legend node.
virtual void setColumnBreak (bool breakBeforeNode)
 Sets whether a forced column break should occur before the node.
virtual bool setData (const QVariant &value, int role)
 Sets some data associated with the item. Default implementation does nothing and returns false.
virtual void setEmbeddedInParent (bool embedded)
virtual void setUserLabel (const QString &userLabel)
virtual void setUserPatchSize (QSizeF size)
 Sets the user (overridden) size for the legend node.
virtual QString userLabel () const
virtual QSizeF userPatchSize () const
 Returns the user (overridden) size for the legend node.

Protected Member Functions

 QgsLayerTreeModelLegendNode (QgsLayerTreeLayer *nodeL, QObject *parent=nullptr)
 Construct the node with pointer to its parent layer node.
QgsRenderContextcreateTemporaryRenderContext () const
 Returns a temporary context or nullptr if legendMapViewData are not valid.

Protected Attributes

bool mColumnBreakBeforeNode = false
bool mEmbeddedInParent = false
QgsLayerTreeLayermLayerNode = nullptr
QgsLegendPatchShape mPatchShape
QString mUserLabel
QSizeF mUserSize

Detailed Description

An abstract interface for legend items returned from QgsMapLayerLegend implementation.

The objects are used in QgsLayerTreeModel. Custom implementations may offer additional interactivity and customized look.

Definition at line 49 of file qgslayertreemodellegendnode.h.

Member Enumeration Documentation

◆ CustomRole

enum class QgsLayerTreeModelLegendNode::CustomRole : int
strong

Legend node data roles.

Note
Prior to QGIS 3.36 this was available as QgsLayerTreeModelLegendNode::LegendNodeRoles
Since
QGIS 3.36
Enumerator
RuleKey 

Rule key of the node (QString).

ParentRuleKey 

Rule key of the parent legend node - for legends with tree hierarchy (QString). Added in 2.8.

NodeType 

Type of node. Added in 3.16.

IsDataDefinedSize 

Set when a node is related to data defined size (title or separated legend items). Added in 3.38.

Definition at line 86 of file qgslayertreemodellegendnode.h.

◆ NodeTypes

Types of legend nodes.

Enumerator
SimpleLegend 

Simple label with icon legend node type.

SymbolLegend 

Vector symbol legend node type.

RasterSymbolLegend 

Raster symbol legend node type.

ImageLegend 

Raster image legend node type.

WmsLegend 

WMS legend node type.

DataDefinedSizeLegend 

Marker symbol legend node type.

EmbeddedWidget 

Embedded widget placeholder node type.

ColorRampLegend 

Color ramp legend.

Since
QGIS 3.18

Definition at line 97 of file qgslayertreemodellegendnode.h.

Constructor & Destructor Documentation

◆ QgsLayerTreeModelLegendNode()

QgsLayerTreeModelLegendNode::QgsLayerTreeModelLegendNode ( QgsLayerTreeLayer * nodeL,
QObject * parent = nullptr )
explicitprotected

Construct the node with pointer to its parent layer node.

Definition at line 50 of file qgslayertreemodellegendnode.cpp.

Member Function Documentation

◆ checkAllItems

void QgsLayerTreeModelLegendNode::checkAllItems ( )
slot

Checks all checkable items belonging to the same layer as this node.

See also
uncheckAllItems()
toggleAllItems()
Since
QGIS 3.18 (previously was available in QgsSymbolLegendNode subclass only)

Definition at line 283 of file qgslayertreemodellegendnode.cpp.

◆ columnBreak()

virtual bool QgsLayerTreeModelLegendNode::columnBreak ( ) const
inlinevirtual

Returns whether a forced column break should occur before the node.

See also
setColumnBreak()
Since
QGIS 3.14

Definition at line 166 of file qgslayertreemodellegendnode.h.

◆ createTemporaryRenderContext()

QgsRenderContext * QgsLayerTreeModelLegendNode::createTemporaryRenderContext ( ) const
protected

Returns a temporary context or nullptr if legendMapViewData are not valid.

Definition at line 490 of file qgslayertreemodellegendnode.cpp.

◆ data()

virtual QVariant QgsLayerTreeModelLegendNode::data ( int role) const
pure virtual

◆ dataChanged

void QgsLayerTreeModelLegendNode::dataChanged ( )
signal

Emitted on internal data change so the layer tree model can forward the signal to views.

◆ draw()

QgsLayerTreeModelLegendNode::ItemMetrics QgsLayerTreeModelLegendNode::draw ( const QgsLegendSettings & settings,
ItemContext & ctx )
virtual

Entry point called from QgsLegendRenderer to do the rendering.

Default implementation calls drawSymbol() and drawSymbolText() methods.

Reimplemented in QgsDataDefinedSizeLegendNode.

Definition at line 90 of file qgslayertreemodellegendnode.cpp.

◆ drawSymbol()

QSizeF QgsLayerTreeModelLegendNode::drawSymbol ( const QgsLegendSettings & settings,
ItemContext * ctx,
double itemHeight ) const
virtual

Draws symbol on the left side of the item.

Parameters
settingsLegend layout configuration
ctxContext for rendering - may be nullptr if only doing layout without actual rendering
itemHeightMinimal height of the legend item - used for correct positioning when rendering
Returns
Real size of the symbol (may be bigger than "normal" symbol size from settings)

Reimplemented in QgsColorRampLegendNode, QgsImageLegendNode, QgsRasterSymbolLegendNode, QgsSymbolLegendNode, QgsVectorLabelLegendNode, and QgsWmsLegendNode.

Definition at line 141 of file qgslayertreemodellegendnode.cpp.

◆ drawSymbolText()

QSizeF QgsLayerTreeModelLegendNode::drawSymbolText ( const QgsLegendSettings & settings,
ItemContext * ctx,
QSizeF symbolSize ) const
virtual

Draws label on the right side of the item.

Parameters
settingsLegend layout configuration
ctxContext for rendering - may be nullptr if only doing layout without actual rendering
symbolSizeReal size of the associated symbol - used for correct positioning when rendering
Returns
Size of the label (may span multiple lines)

Reimplemented in QgsColorRampLegendNode.

Definition at line 197 of file qgslayertreemodellegendnode.cpp.

◆ exportSymbolToJson()

QJsonObject QgsLayerTreeModelLegendNode::exportSymbolToJson ( const QgsLegendSettings & settings,
const QgsRenderContext & context ) const
virtual

Adds a symbol in base64 string within a JSON object with the key "icon".

Parameters
settingsLegend layout configuration
contextRendering context
Since
QGIS 3.8

Reimplemented in QgsColorRampLegendNode, QgsImageLegendNode, QgsRasterSymbolLegendNode, QgsSymbolLegendNode, QgsVectorLabelLegendNode, and QgsWmsLegendNode.

Definition at line 180 of file qgslayertreemodellegendnode.cpp.

◆ exportToJson()

QJsonObject QgsLayerTreeModelLegendNode::exportToJson ( const QgsLegendSettings & settings,
const QgsRenderContext & context )

Entry point called from QgsLegendRenderer to do the rendering in a JSON object.

Parameters
settingsLegend layout configuration
contextRendering context
Since
QGIS 3.8

Definition at line 133 of file qgslayertreemodellegendnode.cpp.

◆ flags()

Qt::ItemFlags QgsLayerTreeModelLegendNode::flags ( ) const
virtual

Returns item flags associated with the item. Default implementation returns Qt::ItemIsEnabled.

Reimplemented in QgsRasterSymbolLegendNode, and QgsSymbolLegendNode.

Definition at line 61 of file qgslayertreemodellegendnode.cpp.

◆ invalidateMapBasedData()

virtual void QgsLayerTreeModelLegendNode::invalidateMapBasedData ( )
inlinevirtual

Notification from model that information from associated map view has changed.

Default implementation does nothing.

Reimplemented in QgsSymbolLegendNode, and QgsWmsLegendNode.

Definition at line 174 of file qgslayertreemodellegendnode.h.

◆ isEmbeddedInParent()

virtual bool QgsLayerTreeModelLegendNode::isEmbeddedInParent ( ) const
inlinevirtual

Definition at line 124 of file qgslayertreemodellegendnode.h.

◆ isScaleOK()

virtual bool QgsLayerTreeModelLegendNode::isScaleOK ( double scale) const
inlinevirtual

Reimplemented in QgsSymbolLegendNode.

Definition at line 168 of file qgslayertreemodellegendnode.h.

◆ layerNode()

QgsLayerTreeLayer * QgsLayerTreeModelLegendNode::layerNode ( ) const
inline

Returns pointer to the parent layer node.

Definition at line 110 of file qgslayertreemodellegendnode.h.

◆ model()

QgsLayerTreeModel * QgsLayerTreeModelLegendNode::model ( ) const

Returns pointer to model owning this legend node.

Definition at line 56 of file qgslayertreemodellegendnode.cpp.

◆ setColumnBreak()

virtual void QgsLayerTreeModelLegendNode::setColumnBreak ( bool breakBeforeNode)
inlinevirtual

Sets whether a forced column break should occur before the node.

See also
columnBreak()
Since
QGIS 3.14

Definition at line 158 of file qgslayertreemodellegendnode.h.

◆ setData()

bool QgsLayerTreeModelLegendNode::setData ( const QVariant & value,
int role )
virtual

Sets some data associated with the item. Default implementation does nothing and returns false.

Reimplemented in QgsRasterSymbolLegendNode, and QgsSymbolLegendNode.

Definition at line 66 of file qgslayertreemodellegendnode.cpp.

◆ setEmbeddedInParent()

virtual void QgsLayerTreeModelLegendNode::setEmbeddedInParent ( bool embedded)
inlinevirtual

Reimplemented in QgsSymbolLegendNode.

Definition at line 125 of file qgslayertreemodellegendnode.h.

◆ setUserLabel()

virtual void QgsLayerTreeModelLegendNode::setUserLabel ( const QString & userLabel)
inlinevirtual

Reimplemented in QgsSymbolLegendNode.

Definition at line 128 of file qgslayertreemodellegendnode.h.

◆ setUserPatchSize()

void QgsLayerTreeModelLegendNode::setUserPatchSize ( QSizeF size)
virtual

Sets the user (overridden) size for the legend node.

If either the width or height are non-zero, they will be used when rendering the legend node instead of the default symbol width or height from QgsLegendSettings.

See also
userPatchSize()
Since
QGIS 3.14

Definition at line 81 of file qgslayertreemodellegendnode.cpp.

◆ sizeChanged

void QgsLayerTreeModelLegendNode::sizeChanged ( )
signal

Emitted when the size of this node changes.

Since
QGIS 3.16

◆ toggleAllItems

void QgsLayerTreeModelLegendNode::toggleAllItems ( )
slot

Toggle all checkable items belonging to the same layer as this node.

See also
checkAllItems()
uncheckAllItems()
Since
QGIS 3.18 (previously was available in QgsSymbolLegendNode subclass only)

Definition at line 293 of file qgslayertreemodellegendnode.cpp.

◆ uncheckAllItems

void QgsLayerTreeModelLegendNode::uncheckAllItems ( )
slot

Unchecks all checkable items belonging to the same layer as this node.

See also
checkAllItems()
toggleAllItems()
Since
QGIS 3.18 (previously was available in QgsSymbolLegendNode subclass only)

Definition at line 288 of file qgslayertreemodellegendnode.cpp.

◆ userLabel()

virtual QString QgsLayerTreeModelLegendNode::userLabel ( ) const
inlinevirtual

Definition at line 127 of file qgslayertreemodellegendnode.h.

◆ userPatchSize()

QSizeF QgsLayerTreeModelLegendNode::userPatchSize ( ) const
virtual

Returns the user (overridden) size for the legend node.

If either the width or height are non-zero, they will be used when rendering the legend node instead of the default symbol width or height from QgsLegendSettings.

See also
setUserPatchSize()
Since
QGIS 3.14

Definition at line 73 of file qgslayertreemodellegendnode.cpp.

Member Data Documentation

◆ mColumnBreakBeforeNode

bool QgsLayerTreeModelLegendNode::mColumnBreakBeforeNode = false
protected

Definition at line 372 of file qgslayertreemodellegendnode.h.

◆ mEmbeddedInParent

bool QgsLayerTreeModelLegendNode::mEmbeddedInParent = false
protected

Definition at line 368 of file qgslayertreemodellegendnode.h.

◆ mLayerNode

QgsLayerTreeLayer* QgsLayerTreeModelLegendNode::mLayerNode = nullptr
protected

Definition at line 367 of file qgslayertreemodellegendnode.h.

◆ mPatchShape

QgsLegendPatchShape QgsLayerTreeModelLegendNode::mPatchShape
protected

Definition at line 370 of file qgslayertreemodellegendnode.h.

◆ mUserLabel

QString QgsLayerTreeModelLegendNode::mUserLabel
protected

Definition at line 369 of file qgslayertreemodellegendnode.h.

◆ mUserSize

QSizeF QgsLayerTreeModelLegendNode::mUserSize
protected

Definition at line 371 of file qgslayertreemodellegendnode.h.


The documentation for this class was generated from the following files: