QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
Signals | Public Member Functions | List of all members
QgsLegendModel Class Reference

Item model implementation based on layer tree model for layout legend. More...

#include <qgslayoutitemlegend.h>

Inheritance diagram for QgsLegendModel:
Inheritance graph
[legend]

Signals

void refreshLegend ()
 Emitted to refresh the legend. More...
 
- Signals inherited from QgsLayerTreeModel
void hitTestCompleted ()
 Emitted when a hit test for visible legend items completes. More...
 
void hitTestStarted ()
 Emitted when a hit test for visible legend items starts. More...
 
void messageEmitted (const QString &message, Qgis::MessageLevel level=Qgis::MessageLevel::Info, int duration=5)
 Emits a message than can be displayed to the user in a GUI class. More...
 

Public Member Functions

 QgsLegendModel (QgsLayerTree *rootNode, QgsLayoutItemLegend *layout)
 Alternative constructor. More...
 
 QgsLegendModel (QgsLayerTree *rootNode, QObject *parent=nullptr, QgsLayoutItemLegend *layout=nullptr)
 Construct the model based on the given layer tree. More...
 
void clearCachedData (QgsLayerTreeNode *node) const
 Clears any previously cached data for the specified node. More...
 
QVariant data (const QModelIndex &index, int role) const override
 
Qt::ItemFlags flags (const QModelIndex &index) const override
 
QList< QgsLayerTreeModelLegendNode * > layerLegendNodes (QgsLayerTreeLayer *nodeLayer, bool skipNodeEmbeddedInParent=false) const
 Returns filtered list of active legend nodes attached to a particular layer node (by default it returns also legend node embedded in parent layer node (if any) unless skipNodeEmbeddedInParent is true) More...
 
- Public Member Functions inherited from QgsLayerTreeModel
 QgsLayerTreeModel (QgsLayerTree *rootNode, QObject *parent=nullptr)
 Construct a new tree model with given layer tree (root node must not be nullptr). More...
 
 ~QgsLayerTreeModel () override
 
void addTargetScreenProperties (const QgsScreenProperties &properties)
 Adds additional target screen properties to use when generating icons for Qt::DecorationRole data. More...
 
int autoCollapseLegendNodes () const
 Returns at what number of legend nodes the layer node should be collapsed. -1 means no auto-collapse (default). More...
 
int columnCount (const QModelIndex &parent=QModelIndex()) const override
 
QModelIndex currentIndex () const
 Gets index of the item marked as current. Item marked as current is underlined. More...
 
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
 
bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
 
const QgsLayerTreeFilterSettingsfilterSettings () const
 Returns the filter settings to use to filter legend nodes. More...
 
QgsLayerTreeModelLegendNodefindLegendNode (const QString &layerId, const QString &ruleKey) const
 Searches through the layer tree to find a legend node with a matching layer ID and rule key. More...
 
Flags flags () const
 Returns OR-ed combination of model flags. More...
 
Qt::ItemFlags flags (const QModelIndex &index) const override
 
bool hitTestInProgress () const
 Returns true if a hit test for visible legend items is currently in progress. More...
 
QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const override
 
QgsLayerTreeNodeindex2node (const QModelIndex &index) const
 Returns layer tree node for given index. More...
 
QList< QgsLayerTreeNode * > indexes2nodes (const QModelIndexList &list, bool skipInternal=false) const
 Convert a list of indexes to a list of layer tree nodes. More...
 
QList< QgsLayerTreeModelLegendNode * > layerLegendNodes (QgsLayerTreeLayer *nodeLayer, bool skipNodeEmbeddedInParent=false)
 Returns filtered list of active legend nodes attached to a particular layer node (by default it returns also legend node embedded in parent layer node (if any) unless skipNodeEmbeddedInParent is true) More...
 
QList< QgsLayerTreeModelLegendNode * > layerOriginalLegendNodes (QgsLayerTreeLayer *nodeLayer)
 Returns original (unfiltered) list of legend nodes attached to a particular layer node. More...
 
QMap< QString, QString > layerStyleOverrides () const
 Gets map of map layer style overrides (key: layer ID, value: style name) where a different style should be used instead of the current one. More...
 
QFont layerTreeNodeFont (int nodeType) const
 Gets font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration. More...
 
double legendFilterByScale () const
 Returns the scale which restricts the legend nodes which are visible. More...
 
const QgsMapSettingslegendFilterMapSettings () const
 Returns the current map settings used for the current legend filter (or nullptr if none is enabled) More...
 
void legendMapViewData (double *mapUnitsPerPixel, int *dpi, double *scale) const
 Gets hints about map view - to be used in legend nodes. More...
 
QModelIndex legendNode2index (QgsLayerTreeModelLegendNode *legendNode)
 Returns index for a given legend node. More...
 
QgsLayerTreeModelLegendNodelegendNodeEmbeddedInParent (QgsLayerTreeLayer *nodeLayer) const
 Returns legend node that may be embedded in parent (i.e. More...
 
QMimeData * mimeData (const QModelIndexList &indexes) const override
 
QStringList mimeTypes () const override
 
QModelIndex node2index (QgsLayerTreeNode *node) const
 Returns index for a given node. If the node does not belong to the layer tree, the result is undefined. More...
 
QModelIndex parent (const QModelIndex &child) const override
 
void refreshLayerLegend (QgsLayerTreeLayer *nodeLayer)
 Force a refresh of legend nodes of a layer node. More...
 
bool removeRows (int row, int count, const QModelIndex &parent=QModelIndex()) override
 
QgsLayerTreerootGroup () const
 Returns pointer to the root node of the layer tree. Always a non nullptr value. More...
 
int rowCount (const QModelIndex &parent=QModelIndex()) const override
 
void setAutoCollapseLegendNodes (int nodeCount)
 Sets at what number of legend nodes the layer node should be collapsed. Setting -1 disables the auto-collapse (default). More...
 
void setCurrentIndex (const QModelIndex &currentIndex)
 Sets index of the current item. May be used by view. Item marked as current is underlined. More...
 
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
 
void setFilterSettings (const QgsLayerTreeFilterSettings *settings=nullptr)
 Sets the filter settings to use to filter legend nodes. More...
 
void setFlag (Flag f, bool on=true)
 Enable or disable a model flag. More...
 
void setFlags (QgsLayerTreeModel::Flags f)
 Sets OR-ed combination of model flags. More...
 
void setLayerStyleOverrides (const QMap< QString, QString > &overrides)
 Sets map of map layer style overrides (key: layer ID, value: style name) where a different style should be used instead of the current one. More...
 
void setLayerTreeNodeFont (int nodeType, const QFont &font)
 Sets font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration. More...
 
Q_DECL_DEPRECATED void setLegendFilter (const QgsMapSettings *settings, bool useExtent=true, const QgsGeometry &polygon=QgsGeometry(), bool useExpressions=true)
 Filter display of legend nodes for given map settings. More...
 
Q_DECL_DEPRECATED void setLegendFilterByMap (const QgsMapSettings *settings)
 Force only display of legend nodes which are valid for given map settings. More...
 
void setLegendFilterByScale (double scale)
 Force only display of legend nodes which are valid for a given scale. More...
 
void setLegendMapViewData (double mapUnitsPerPixel, int dpi, double scale)
 Give the layer tree model hints about the currently associated map view so that legend nodes that use map units can be scaled correctly. More...
 
void setRootGroup (QgsLayerTree *newRootGroup)
 Reset the model and use a new root group node. More...
 
Qt::DropActions supportedDropActions () const override
 
QSet< QgsScreenPropertiestargetScreenProperties () const
 Returns the target screen properties to use when generating icons. More...
 
bool testFlag (Flag f) const
 Check whether a flag is enabled. More...
 
void waitForHitTestBlocking ()
 When a current hit test for visible legend items is in progress, calling this method will block until that hit test is complete. More...
 

Additional Inherited Members

- Public Types inherited from QgsLayerTreeModel
enum  Flag {
  ShowLegend = 0x0001 , ShowLegendAsTree = 0x0004 , DeferredLegendInvalidation = 0x0008 , UseEmbeddedWidgets = 0x0010 ,
  UseTextFormatting = 0x0020 , AllowNodeReorder = 0x1000 , AllowNodeRename = 0x2000 , AllowNodeChangeVisibility = 0x4000 ,
  AllowLegendChangeState = 0x8000 , ActionHierarchical = 0x10000 , UseThreadedHitTest = 0x20000
}
 
typedef QFlags< FlagFlags
 
- Static Public Member Functions inherited from QgsLayerTreeModel
static QgsLayerTreeModelLegendNodeindex2legendNode (const QModelIndex &index)
 Returns legend node for given index. More...
 
static int scaleIconSize (int standardSize)
 Scales an layer tree model icon size to compensate for display pixel density, making the icon size hi-dpi friendly, whilst still resulting in pixel-perfect sizes for low-dpi displays. More...
 
- Protected Slots inherited from QgsLayerTreeModel
void invalidateLegendMapBasedData ()
 
void layerFlagsChanged ()
 Emitted when layer flags have changed. More...
 
void layerLegendChanged ()
 
void layerNeedsUpdate ()
 
void legendNodeDataChanged ()
 
void nodeAddedChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo)
 
void nodeCustomPropertyChanged (QgsLayerTreeNode *node, const QString &key)
 
void nodeLayerLoaded ()
 
void nodeLayerWillBeUnloaded ()
 
void nodeNameChanged (QgsLayerTreeNode *node, const QString &name)
 Updates model when node's name has changed. More...
 
void nodeRemovedChildren ()
 
void nodeVisibilityChanged (QgsLayerTreeNode *node)
 
void nodeWillAddChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo)
 
void nodeWillRemoveChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo)
 
- Protected Member Functions inherited from QgsLayerTreeModel
void addLegendToLayer (QgsLayerTreeLayer *nodeL)
 
void connectToLayer (QgsLayerTreeLayer *nodeLayer)
 
void connectToLayers (QgsLayerTreeGroup *parentGroup)
 
void connectToRootNode ()
 
QgsRenderContextcreateTemporaryRenderContext () const
 Returns a temporary render context. More...
 
void disconnectFromLayer (QgsLayerTreeLayer *nodeLayer)
 
void disconnectFromLayers (QgsLayerTreeGroup *parentGroup)
 
void disconnectFromRootNode ()
 
QList< QgsLayerTreeModelLegendNode * > filterLegendNodes (const QList< QgsLayerTreeModelLegendNode * > &nodes)
 Filter nodes from QgsMapLayerLegend according to the current filtering rules. More...
 
QModelIndex indexOfParentLayerTreeNode (QgsLayerTreeNode *parentNode) const
 
void legendCleanup ()
 
bool legendEmbeddedInParent (QgsLayerTreeLayer *nodeLayer) const
 
QIcon legendIconEmbeddedInParent (QgsLayerTreeLayer *nodeLayer) const
 
void legendInvalidateMapBasedData ()
 
QVariant legendNodeData (QgsLayerTreeModelLegendNode *node, int role) const
 
Qt::ItemFlags legendNodeFlags (QgsLayerTreeModelLegendNode *node) const
 
QModelIndex legendNodeIndex (int row, int column, QgsLayerTreeModelLegendNode *node) const
 
int legendNodeRowCount (QgsLayerTreeModelLegendNode *node) const
 
QModelIndex legendParent (QgsLayerTreeModelLegendNode *legendNode) const
 
QModelIndex legendRootIndex (int row, int column, QgsLayerTreeLayer *nL) const
 
int legendRootRowCount (QgsLayerTreeLayer *nL) const
 
void recursivelyEmitDataChanged (const QModelIndex &index=QModelIndex())
 emit dataChanged() for layer tree node items More...
 
void refreshScaleBasedLayers (const QModelIndex &index=QModelIndex(), double previousScale=0.0)
 Updates layer data for scale dependent layers, should be called when map scale changes. More...
 
void removeLegendFromLayer (QgsLayerTreeLayer *nodeLayer)
 
LayerLegendTreetryBuildLegendTree (const QList< QgsLayerTreeModelLegendNode * > &nodes)
 
- Static Protected Member Functions inherited from QgsLayerTreeModel
static QIcon iconGroup ()
 
- Protected Attributes inherited from QgsLayerTreeModel
int mAutoCollapseLegendNodesCount = -1
 Minimal number of nodes when legend should be automatically collapsed. -1 = disabled. More...
 
QPersistentModelIndex mCurrentIndex
 Current index - will be underlined. More...
 
QTimer mDeferLegendInvalidationTimer
 
std::unique_ptr< QgsLayerTreeFilterSettingsmFilterSettings
 
Flags mFlags
 Sets of flags for the model. More...
 
QFont mFontGroup
 
QFont mFontLayer
 
QMap< QString, QSet< QString > > mHitTestResults
 
QPointer< QgsMapHitTestTaskmHitTestTask
 
QSet< QgsLayerTreeLayer * > mInvalidatedNodes
 Keep track of layer nodes for which the legend size needs to be recalculated. More...
 
QMap< QString, QString > mLayerStyleOverrides
 Overrides of map layers' styles: key = layer ID, value = style XML. More...
 
QHash< QgsLayerTreeLayer *, LayerLegendDatamLegend
 Per layer data about layer's legend nodes. More...
 
double mLegendFilterByScale = 0
 scale denominator for filtering of legend nodes (<= 0 means no filtering) More...
 
int mLegendMapViewDpi = 0
 
double mLegendMapViewMupp = 0
 
double mLegendMapViewScale = 0
 
QgsLayerTreemRootNode = nullptr
 Pointer to the root node of the layer tree. Not owned by the model. More...
 
QSet< QgsScreenPropertiesmTargetScreenProperties
 

Detailed Description

Item model implementation based on layer tree model for layout legend.

Overrides some functionality of QgsLayerTreeModel to better fit the needs of layout legends.

Definition at line 42 of file qgslayoutitemlegend.h.

Constructor & Destructor Documentation

◆ QgsLegendModel() [1/2]

QgsLegendModel::QgsLegendModel ( QgsLayerTree rootNode,
QObject *  parent = nullptr,
QgsLayoutItemLegend layout = nullptr 
)

Construct the model based on the given layer tree.

Definition at line 1335 of file qgslayoutitemlegend.cpp.

◆ QgsLegendModel() [2/2]

QgsLegendModel::QgsLegendModel ( QgsLayerTree rootNode,
QgsLayoutItemLegend layout 
)

Alternative constructor.

Definition at line 1345 of file qgslayoutitemlegend.cpp.

Member Function Documentation

◆ clearCachedData()

void QgsLegendModel::clearCachedData ( QgsLayerTreeNode node) const

Clears any previously cached data for the specified node.

Since
QGIS 3.14

Definition at line 1413 of file qgslayoutitemlegend.cpp.

◆ data()

QVariant QgsLegendModel::data ( const QModelIndex &  index,
int  role 
) const
override

Definition at line 1355 of file qgslayoutitemlegend.cpp.

◆ flags()

Qt::ItemFlags QgsLegendModel::flags ( const QModelIndex &  index) const
override

Definition at line 1392 of file qgslayoutitemlegend.cpp.

◆ layerLegendNodes()

QList< QgsLayerTreeModelLegendNode * > QgsLegendModel::layerLegendNodes ( QgsLayerTreeLayer nodeLayer,
bool  skipNodeEmbeddedInParent = false 
) const

Returns filtered list of active legend nodes attached to a particular layer node (by default it returns also legend node embedded in parent layer node (if any) unless skipNodeEmbeddedInParent is true)

Note
Parameter skipNodeEmbeddedInParent added in QGIS 2.18
Not available in Python bindings
See also
layerOriginalLegendNodes()
Since
QGIS 3.10

Definition at line 1401 of file qgslayoutitemlegend.cpp.

◆ refreshLegend

void QgsLegendModel::refreshLegend ( )
signal

Emitted to refresh the legend.

Since
QGIS 3.10

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