QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
Classes | Public Types | Signals | Public Member Functions | Static Public Member Functions | Protected Slots | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
QgsLayerTreeModel Class Reference

The QgsLayerTreeModel class is model implementation for Qt item views framework. More...

#include <qgslayertreemodel.h>

Inheritance diagram for QgsLayerTreeModel:
Inheritance graph
[legend]

Classes

struct  LayerLegendData
 Structure that stores all data associated with one map layer. More...
 
struct  LayerLegendTree
 Structure that stores tree representation of map layer's legend. More...
 

Public Types

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
 

Signals

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

 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...
 

Static Public Member Functions

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

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

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

static QIcon iconGroup ()
 

Protected Attributes

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

The QgsLayerTreeModel class is model implementation for Qt item views framework.

The model can be used in any QTreeView, it is however recommended to use it with QgsLayerTreeView which brings additional functionality specific to layer tree handling.

The model listens to the changes in the layer tree and signals the changes as appropriate, so that any view that uses the model is updated accordingly.

Behavior of the model can be customized with flags. For example, whether to show legend or whether to allow changes to the layer tree.

See also
QgsLayerTreeView

Definition at line 56 of file qgslayertreemodel.h.

Member Typedef Documentation

◆ Flags

typedef QFlags< Flag > QgsLayerTreeModel::Flags

Definition at line 113 of file qgslayertreemodel.h.

Member Enumeration Documentation

◆ Flag

Enumerator
ShowLegend 

Add legend nodes for layer nodes.

ShowLegendAsTree 

For legends that support it, will show them in a tree instead of a list (needs also ShowLegend). Added in 2.8.

DeferredLegendInvalidation 

Defer legend model invalidation.

UseEmbeddedWidgets 

Layer nodes may optionally include extra embedded widgets (if used in QgsLayerTreeView). Added in 2.16.

UseTextFormatting 

Layer nodes will alter text appearance based on layer properties, such as scale based visibility.

AllowNodeReorder 

Allow reordering with drag'n'drop.

AllowNodeRename 

Allow renaming of groups and layers.

AllowNodeChangeVisibility 

Allow user to set node visibility with a checkbox.

AllowLegendChangeState 

Allow check boxes for legend nodes (if supported by layer's legend)

ActionHierarchical 

Check/uncheck action has consequences on children (or parents for leaf node)

UseThreadedHitTest 

Run legend hit tests in a background thread (since QGIS 3.30)

Definition at line 96 of file qgslayertreemodel.h.

Constructor & Destructor Documentation

◆ QgsLayerTreeModel()

QgsLayerTreeModel::QgsLayerTreeModel ( QgsLayerTree rootNode,
QObject *  parent = nullptr 
)
explicit

Construct a new tree model with given layer tree (root node must not be nullptr).

The root node is not transferred by the model.

Definition at line 39 of file qgslayertreemodel.cpp.

◆ ~QgsLayerTreeModel()

QgsLayerTreeModel::~QgsLayerTreeModel ( )
override

Definition at line 52 of file qgslayertreemodel.cpp.

Member Function Documentation

◆ addLegendToLayer()

void QgsLayerTreeModel::addLegendToLayer ( QgsLayerTreeLayer nodeL)
protected

Definition at line 1378 of file qgslayertreemodel.cpp.

◆ addTargetScreenProperties()

void QgsLayerTreeModel::addTargetScreenProperties ( const QgsScreenProperties properties)

Adds additional target screen properties to use when generating icons for Qt::DecorationRole data.

This allows icons to be generated at an icon device pixel ratio and DPI which corresponds exactly to the view's screen properties in which this model is used.

Since
QGIS 3.32

Definition at line 740 of file qgslayertreemodel.cpp.

◆ autoCollapseLegendNodes()

int QgsLayerTreeModel::autoCollapseLegendNodes ( ) const
inline

Returns at what number of legend nodes the layer node should be collapsed. -1 means no auto-collapse (default).

Definition at line 205 of file qgslayertreemodel.h.

◆ columnCount()

int QgsLayerTreeModel::columnCount ( const QModelIndex &  parent = QModelIndex()) const
override

Definition at line 87 of file qgslayertreemodel.cpp.

◆ connectToLayer()

void QgsLayerTreeModel::connectToLayer ( QgsLayerTreeLayer nodeLayer)
protected

Definition at line 950 of file qgslayertreemodel.cpp.

◆ connectToLayers()

void QgsLayerTreeModel::connectToLayers ( QgsLayerTreeGroup parentGroup)
protected

Definition at line 1034 of file qgslayertreemodel.cpp.

◆ connectToRootNode()

void QgsLayerTreeModel::connectToRootNode ( )
protected

Definition at line 1058 of file qgslayertreemodel.cpp.

◆ createTemporaryRenderContext()

QgsRenderContext * QgsLayerTreeModel::createTemporaryRenderContext ( ) const
protected

Returns a temporary render context.

Note
Note available in Python bindings.

Definition at line 1514 of file qgslayertreemodel.cpp.

◆ currentIndex()

QModelIndex QgsLayerTreeModel::currentIndex ( ) const

Gets index of the item marked as current. Item marked as current is underlined.

Definition at line 538 of file qgslayertreemodel.cpp.

◆ data()

QVariant QgsLayerTreeModel::data ( const QModelIndex &  index,
int  role = Qt::DisplayRole 
) const
override

Definition at line 152 of file qgslayertreemodel.cpp.

◆ disconnectFromLayer()

void QgsLayerTreeModel::disconnectFromLayer ( QgsLayerTreeLayer nodeLayer)
protected

Definition at line 1015 of file qgslayertreemodel.cpp.

◆ disconnectFromLayers()

void QgsLayerTreeModel::disconnectFromLayers ( QgsLayerTreeGroup parentGroup)
protected

Definition at line 1046 of file qgslayertreemodel.cpp.

◆ disconnectFromRootNode()

void QgsLayerTreeModel::disconnectFromRootNode ( )
protected

Definition at line 1073 of file qgslayertreemodel.cpp.

◆ dropMimeData()

bool QgsLayerTreeModel::dropMimeData ( const QMimeData *  data,
Qt::DropAction  action,
int  row,
int  column,
const QModelIndex &  parent 
)
override

Definition at line 1165 of file qgslayertreemodel.cpp.

◆ filterLegendNodes()

QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::filterLegendNodes ( const QList< QgsLayerTreeModelLegendNode * > &  nodes)
protected

Filter nodes from QgsMapLayerLegend according to the current filtering rules.

Definition at line 1275 of file qgslayertreemodel.cpp.

◆ filterSettings()

const QgsLayerTreeFilterSettings * QgsLayerTreeModel::filterSettings ( ) const

Returns the filter settings to use to filter legend nodes.

May be nullptr.

See also
setFilterSettings()
Since
QGIS 3.32

Definition at line 686 of file qgslayertreemodel.cpp.

◆ findLegendNode()

QgsLayerTreeModelLegendNode * QgsLayerTreeModel::findLegendNode ( 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.

Parameters
layerIdmap layer ID
ruleKeylegend node rule key
Returns
QgsLayerTreeModelLegendNode if found

Definition at line 1692 of file qgslayertreemodel.cpp.

◆ flags() [1/2]

QgsLayerTreeModel::Flags QgsLayerTreeModel::flags ( ) const

Returns OR-ed combination of model flags.

Definition at line 1260 of file qgslayertreemodel.cpp.

◆ flags() [2/2]

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

Definition at line 331 of file qgslayertreemodel.cpp.

◆ hitTestCompleted

void QgsLayerTreeModel::hitTestCompleted ( )
signal

Emitted when a hit test for visible legend items completes.

See also
hitTestInProgress()
hitTestStarted()
Since
QGIS 3.32

◆ hitTestInProgress()

bool QgsLayerTreeModel::hitTestInProgress ( ) const

Returns true if a hit test for visible legend items is currently in progress.

See also
hitTestStarted()
hitTestCompleted()
Since
QGIS 3.32

Definition at line 764 of file qgslayertreemodel.cpp.

◆ hitTestStarted

void QgsLayerTreeModel::hitTestStarted ( )
signal

Emitted when a hit test for visible legend items starts.

See also
hitTestInProgress()
hitTestCompleted()
Since
QGIS 3.32

◆ iconGroup()

QIcon QgsLayerTreeModel::iconGroup ( )
staticprotected

Definition at line 1270 of file qgslayertreemodel.cpp.

◆ index()

QModelIndex QgsLayerTreeModel::index ( int  row,
int  column,
const QModelIndex &  parent = QModelIndex() 
) const
override

Definition at line 93 of file qgslayertreemodel.cpp.

◆ index2legendNode()

QgsLayerTreeModelLegendNode * QgsLayerTreeModel::index2legendNode ( const QModelIndex &  index)
static

Returns legend node for given index.

Returns nullptr for invalid index

Definition at line 1538 of file qgslayertreemodel.cpp.

◆ index2node()

QgsLayerTreeNode * QgsLayerTreeModel::index2node ( const QModelIndex &  index) const

Returns layer tree node for given index.

Returns root node for invalid index. Returns nullptr if index does not refer to a layer tree node (e.g. it is a legend node)

Definition at line 57 of file qgslayertreemodel.cpp.

◆ indexes2nodes()

QList< QgsLayerTreeNode * > QgsLayerTreeModel::indexes2nodes ( const QModelIndexList &  list,
bool  skipInternal = false 
) const

Convert a list of indexes to a list of layer tree nodes.

Indices that do not represent layer tree nodes are skipped. If skipInternal is true, a node is included in the output list only if no parent node is in the list.

Definition at line 468 of file qgslayertreemodel.cpp.

◆ indexOfParentLayerTreeNode()

QModelIndex QgsLayerTreeModel::indexOfParentLayerTreeNode ( QgsLayerTreeNode parentNode) const
protected

Definition at line 137 of file qgslayertreemodel.cpp.

◆ invalidateLegendMapBasedData

void QgsLayerTreeModel::invalidateLegendMapBasedData ( )
protectedslot

Definition at line 1722 of file qgslayertreemodel.cpp.

◆ layerFlagsChanged

void QgsLayerTreeModel::layerFlagsChanged ( )
protectedslot

Emitted when layer flags have changed.

Since
QGIS 3.18

Definition at line 883 of file qgslayertreemodel.cpp.

◆ layerLegendChanged

void QgsLayerTreeModel::layerLegendChanged ( )
protectedslot

Definition at line 864 of file qgslayertreemodel.cpp.

◆ layerLegendNodes()

QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::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)

Note
Parameter skipNodeEmbeddedInParent added in QGIS 2.18
See also
layerOriginalLegendNodes()

Definition at line 1675 of file qgslayertreemodel.cpp.

◆ layerNeedsUpdate

void QgsLayerTreeModel::layerNeedsUpdate ( )
protectedslot

Definition at line 900 of file qgslayertreemodel.cpp.

◆ layerOriginalLegendNodes()

QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::layerOriginalLegendNodes ( QgsLayerTreeLayer nodeLayer)

Returns original (unfiltered) list of legend nodes attached to a particular layer node.

See also
layerLegendNodes()

Definition at line 1687 of file qgslayertreemodel.cpp.

◆ layerStyleOverrides()

QMap< QString, QString > QgsLayerTreeModel::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.

Definition at line 730 of file qgslayertreemodel.cpp.

◆ layerTreeNodeFont()

QFont QgsLayerTreeModel::layerTreeNodeFont ( int  nodeType) const

Gets font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration.

Definition at line 574 of file qgslayertreemodel.cpp.

◆ legendCleanup()

void QgsLayerTreeModel::legendCleanup ( )
protected

Definition at line 1347 of file qgslayertreemodel.cpp.

◆ legendEmbeddedInParent()

bool QgsLayerTreeModel::legendEmbeddedInParent ( QgsLayerTreeLayer nodeLayer) const
protected

Definition at line 1655 of file qgslayertreemodel.cpp.

◆ legendFilterByScale()

double QgsLayerTreeModel::legendFilterByScale ( ) const
inline

Returns the scale which restricts the legend nodes which are visible.

The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. A scale <= 0 indicates that no scale filtering is being performed.

See also
setLegendFilterByScale()

Definition at line 221 of file qgslayertreemodel.h.

◆ legendFilterMapSettings()

const QgsMapSettings * QgsLayerTreeModel::legendFilterMapSettings ( ) const

Returns the current map settings used for the current legend filter (or nullptr if none is enabled)

Definition at line 633 of file qgslayertreemodel.cpp.

◆ legendIconEmbeddedInParent()

QIcon QgsLayerTreeModel::legendIconEmbeddedInParent ( QgsLayerTreeLayer nodeLayer) const
protected

Definition at line 1666 of file qgslayertreemodel.cpp.

◆ legendInvalidateMapBasedData()

void QgsLayerTreeModel::legendInvalidateMapBasedData ( )
protected

Definition at line 1714 of file qgslayertreemodel.cpp.

◆ legendMapViewData()

void QgsLayerTreeModel::legendMapViewData ( double *  mapUnitsPerPixel,
int *  dpi,
double *  scale 
) const

Gets hints about map view - to be used in legend nodes.

Arguments that are not nullptr will receive values. If there are no valid map view data (from previous call to setLegendMapViewData()), returned values are zeros.

Definition at line 723 of file qgslayertreemodel.cpp.

◆ legendNode2index()

QModelIndex QgsLayerTreeModel::legendNode2index ( QgsLayerTreeModelLegendNode legendNode)

Returns index for a given legend node.

If the legend node does not belong to the layer tree, the result is undefined. If the legend node is belongs to the tree but it is filtered out, invalid model index is returned.

Definition at line 1544 of file qgslayertreemodel.cpp.

◆ legendNodeData()

QVariant QgsLayerTreeModel::legendNodeData ( QgsLayerTreeModelLegendNode node,
int  role 
) const
protected

Definition at line 1638 of file qgslayertreemodel.cpp.

◆ legendNodeDataChanged

void QgsLayerTreeModel::legendNodeDataChanged ( )
protectedslot

Definition at line 918 of file qgslayertreemodel.cpp.

◆ legendNodeEmbeddedInParent()

QgsLayerTreeModelLegendNode * QgsLayerTreeModel::legendNodeEmbeddedInParent ( QgsLayerTreeLayer nodeLayer) const

Returns legend node that may be embedded in parent (i.e.

its icon will be used for layer's icon).

Definition at line 1660 of file qgslayertreemodel.cpp.

◆ legendNodeFlags()

Qt::ItemFlags QgsLayerTreeModel::legendNodeFlags ( QgsLayerTreeModelLegendNode node) const
protected

Definition at line 1646 of file qgslayertreemodel.cpp.

◆ legendNodeIndex()

QModelIndex QgsLayerTreeModel::legendNodeIndex ( int  row,
int  column,
QgsLayerTreeModelLegendNode node 
) const
protected

Definition at line 1608 of file qgslayertreemodel.cpp.

◆ legendNodeRowCount()

int QgsLayerTreeModel::legendNodeRowCount ( QgsLayerTreeModelLegendNode node) const
protected

Definition at line 1573 of file qgslayertreemodel.cpp.

◆ legendParent()

QModelIndex QgsLayerTreeModel::legendParent ( QgsLayerTreeModelLegendNode legendNode) const
protected

Definition at line 1618 of file qgslayertreemodel.cpp.

◆ legendRootIndex()

QModelIndex QgsLayerTreeModel::legendRootIndex ( int  row,
int  column,
QgsLayerTreeLayer nL 
) const
protected

Definition at line 1597 of file qgslayertreemodel.cpp.

◆ legendRootRowCount()

int QgsLayerTreeModel::legendRootRowCount ( QgsLayerTreeLayer nL) const
protected

Definition at line 1583 of file qgslayertreemodel.cpp.

◆ messageEmitted

void QgsLayerTreeModel::messageEmitted ( const QString &  message,
Qgis::MessageLevel  level = Qgis::MessageLevel::Info,
int  duration = 5 
)
signal

Emits a message than can be displayed to the user in a GUI class.

Since
QGIS 3.14

◆ mimeData()

QMimeData * QgsLayerTreeModel::mimeData ( const QModelIndexList &  indexes) const
override

Definition at line 1127 of file qgslayertreemodel.cpp.

◆ mimeTypes()

QStringList QgsLayerTreeModel::mimeTypes ( ) const
override

Definition at line 1119 of file qgslayertreemodel.cpp.

◆ node2index()

QModelIndex QgsLayerTreeModel::node2index ( QgsLayerTreeNode node) const

Returns index for a given node. If the node does not belong to the layer tree, the result is undefined.

Definition at line 432 of file qgslayertreemodel.cpp.

◆ nodeAddedChildren

void QgsLayerTreeModel::nodeAddedChildren ( QgsLayerTreeNode node,
int  indexFrom,
int  indexTo 
)
protectedslot

Definition at line 789 of file qgslayertreemodel.cpp.

◆ nodeCustomPropertyChanged

void QgsLayerTreeModel::nodeCustomPropertyChanged ( QgsLayerTreeNode node,
const QString &  key 
)
protectedslot

Definition at line 835 of file qgslayertreemodel.cpp.

◆ nodeLayerLoaded

void QgsLayerTreeModel::nodeLayerLoaded ( )
protectedslot

Definition at line 842 of file qgslayertreemodel.cpp.

◆ nodeLayerWillBeUnloaded

void QgsLayerTreeModel::nodeLayerWillBeUnloaded ( )
protectedslot

Definition at line 852 of file qgslayertreemodel.cpp.

◆ nodeNameChanged

void QgsLayerTreeModel::nodeNameChanged ( QgsLayerTreeNode node,
const QString &  name 
)
protectedslot

Updates model when node's name has changed.

Definition at line 825 of file qgslayertreemodel.cpp.

◆ nodeRemovedChildren

void QgsLayerTreeModel::nodeRemovedChildren ( )
protectedslot

Definition at line 812 of file qgslayertreemodel.cpp.

◆ nodeVisibilityChanged

void QgsLayerTreeModel::nodeVisibilityChanged ( QgsLayerTreeNode node)
protectedslot

Definition at line 817 of file qgslayertreemodel.cpp.

◆ nodeWillAddChildren

void QgsLayerTreeModel::nodeWillAddChildren ( QgsLayerTreeNode node,
int  indexFrom,
int  indexTo 
)
protectedslot

Definition at line 769 of file qgslayertreemodel.cpp.

◆ nodeWillRemoveChildren

void QgsLayerTreeModel::nodeWillRemoveChildren ( QgsLayerTreeNode node,
int  indexFrom,
int  indexTo 
)
protectedslot

Definition at line 800 of file qgslayertreemodel.cpp.

◆ parent()

QModelIndex QgsLayerTreeModel::parent ( const QModelIndex &  child) const
override

Definition at line 115 of file qgslayertreemodel.cpp.

◆ recursivelyEmitDataChanged()

void QgsLayerTreeModel::recursivelyEmitDataChanged ( const QModelIndex &  index = QModelIndex())
protected

emit dataChanged() for layer tree node items

Definition at line 1080 of file qgslayertreemodel.cpp.

◆ refreshLayerLegend()

void QgsLayerTreeModel::refreshLayerLegend ( QgsLayerTreeLayer nodeLayer)

Force a refresh of legend nodes of a layer node.

Not necessary to call when layer's renderer is changed as the model listens to these events.

Definition at line 515 of file qgslayertreemodel.cpp.

◆ refreshScaleBasedLayers()

void QgsLayerTreeModel::refreshScaleBasedLayers ( const QModelIndex &  index = QModelIndex(),
double  previousScale = 0.0 
)
protected

Updates layer data for scale dependent layers, should be called when map scale changes.

Emits dataChanged() for all scale dependent layers.

Definition at line 1094 of file qgslayertreemodel.cpp.

◆ removeLegendFromLayer()

void QgsLayerTreeModel::removeLegendFromLayer ( QgsLayerTreeLayer nodeLayer)
protected

Definition at line 1367 of file qgslayertreemodel.cpp.

◆ removeRows()

bool QgsLayerTreeModel::removeRows ( int  row,
int  count,
const QModelIndex &  parent = QModelIndex() 
)
override

Definition at line 1236 of file qgslayertreemodel.cpp.

◆ rootGroup()

QgsLayerTree * QgsLayerTreeModel::rootGroup ( ) const

Returns pointer to the root node of the layer tree. Always a non nullptr value.

Definition at line 495 of file qgslayertreemodel.cpp.

◆ rowCount()

int QgsLayerTreeModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const
override

Definition at line 67 of file qgslayertreemodel.cpp.

◆ scaleIconSize()

int QgsLayerTreeModel::scaleIconSize ( int  standardSize)
static

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.

standardSize should be set to a standard icon size, e.g. 16, 24, 48, etc.

Since
QGIS 3.6

Definition at line 753 of file qgslayertreemodel.cpp.

◆ setAutoCollapseLegendNodes()

void QgsLayerTreeModel::setAutoCollapseLegendNodes ( int  nodeCount)
inline

Sets at what number of legend nodes the layer node should be collapsed. Setting -1 disables the auto-collapse (default).

Definition at line 203 of file qgslayertreemodel.h.

◆ setCurrentIndex()

void QgsLayerTreeModel::setCurrentIndex ( const QModelIndex &  currentIndex)

Sets index of the current item. May be used by view. Item marked as current is underlined.

Definition at line 543 of file qgslayertreemodel.cpp.

◆ setData()

bool QgsLayerTreeModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
)
override

Definition at line 368 of file qgslayertreemodel.cpp.

◆ setFilterSettings()

void QgsLayerTreeModel::setFilterSettings ( const QgsLayerTreeFilterSettings settings = nullptr)

Sets the filter settings to use to filter legend nodes.

Set to nullptr to disable legend filter.

See also
filterSettings()
Since
QGIS 3.32

Definition at line 638 of file qgslayertreemodel.cpp.

◆ setFlag()

void QgsLayerTreeModel::setFlag ( QgsLayerTreeModel::Flag  f,
bool  on = true 
)

Enable or disable a model flag.

Definition at line 1252 of file qgslayertreemodel.cpp.

◆ setFlags()

void QgsLayerTreeModel::setFlags ( QgsLayerTreeModel::Flags  f)

Sets OR-ed combination of model flags.

Definition at line 1247 of file qgslayertreemodel.cpp.

◆ setLayerStyleOverrides()

void QgsLayerTreeModel::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.

Definition at line 735 of file qgslayertreemodel.cpp.

◆ setLayerTreeNodeFont()

void QgsLayerTreeModel::setLayerTreeNodeFont ( int  nodeType,
const QFont &  font 
)

Sets font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration.

Definition at line 549 of file qgslayertreemodel.cpp.

◆ setLegendFilter()

void QgsLayerTreeModel::setLegendFilter ( const QgsMapSettings settings,
bool  useExtent = true,
const QgsGeometry polygon = QgsGeometry(),
bool  useExpressions = true 
)

Filter display of legend nodes for given map settings.

Parameters
settingsMap settings. Setting nullptr or invalid settings will disable any filter. Ownership is not changed, a copy is made
useExtentWhether to use the extent of the map settings as a first spatial filter on legend nodes
polygonIf not empty, this polygon will be used instead of the map extent to filter legend nodes
useExpressionsWhether to use legend node filter expressions
Deprecated:
QGIS 3.32. Use setFilterSettings() instead.

Definition at line 605 of file qgslayertreemodel.cpp.

◆ setLegendFilterByMap()

void QgsLayerTreeModel::setLegendFilterByMap ( const QgsMapSettings settings)

Force only display of legend nodes which are valid for given map settings.

Setting nullptr or invalid map settings will disable the functionality. Ownership of map settings pointer does not change, a copy is made.

Deprecated:
QGIS 3.32. Use setFilterSettings() instead.

Definition at line 598 of file qgslayertreemodel.cpp.

◆ setLegendFilterByScale()

void QgsLayerTreeModel::setLegendFilterByScale ( double  scale)

Force only display of legend nodes which are valid for a given scale.

The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. Setting scale <= 0 will disable the functionality.

See also
legendFilterByScale()

Definition at line 587 of file qgslayertreemodel.cpp.

◆ setLegendMapViewData()

void QgsLayerTreeModel::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.

Definition at line 706 of file qgslayertreemodel.cpp.

◆ setRootGroup()

void QgsLayerTreeModel::setRootGroup ( QgsLayerTree newRootGroup)

Reset the model and use a new root group node.

Definition at line 500 of file qgslayertreemodel.cpp.

◆ supportedDropActions()

Qt::DropActions QgsLayerTreeModel::supportedDropActions ( ) const
override

Definition at line 1114 of file qgslayertreemodel.cpp.

◆ targetScreenProperties()

QSet< QgsScreenProperties > QgsLayerTreeModel::targetScreenProperties ( ) const

Returns the target screen properties to use when generating icons.

This allows icons to be generated at an icon device pixel ratio and DPI which corresponds exactly to the view's screen properties in which this model is used.

See also
addTargetScreenProperties()
Since
QGIS 3.32

Definition at line 748 of file qgslayertreemodel.cpp.

◆ testFlag()

bool QgsLayerTreeModel::testFlag ( QgsLayerTreeModel::Flag  f) const

Check whether a flag is enabled.

Definition at line 1265 of file qgslayertreemodel.cpp.

◆ tryBuildLegendTree()

QgsLayerTreeModel::LayerLegendTree * QgsLayerTreeModel::tryBuildLegendTree ( const QList< QgsLayerTreeModelLegendNode * > &  nodes)
protected
Note
not available in Python bindings

Definition at line 1474 of file qgslayertreemodel.cpp.

◆ waitForHitTestBlocking()

void QgsLayerTreeModel::waitForHitTestBlocking ( )

When a current hit test for visible legend items is in progress, calling this method will block until that hit test is complete.

Since
QGIS 3.32

Definition at line 758 of file qgslayertreemodel.cpp.

Member Data Documentation

◆ mAutoCollapseLegendNodesCount

int QgsLayerTreeModel::mAutoCollapseLegendNodesCount = -1
protected

Minimal number of nodes when legend should be automatically collapsed. -1 = disabled.

Definition at line 453 of file qgslayertreemodel.h.

◆ mCurrentIndex

QPersistentModelIndex QgsLayerTreeModel::mCurrentIndex
protected

Current index - will be underlined.

Definition at line 451 of file qgslayertreemodel.h.

◆ mDeferLegendInvalidationTimer

QTimer QgsLayerTreeModel::mDeferLegendInvalidationTimer
protected

Definition at line 540 of file qgslayertreemodel.h.

◆ mFilterSettings

std::unique_ptr< QgsLayerTreeFilterSettings > QgsLayerTreeModel::mFilterSettings
protected

Definition at line 535 of file qgslayertreemodel.h.

◆ mFlags

Flags QgsLayerTreeModel::mFlags
protected

Sets of flags for the model.

Definition at line 449 of file qgslayertreemodel.h.

◆ mFontGroup

QFont QgsLayerTreeModel::mFontGroup
protected

Definition at line 526 of file qgslayertreemodel.h.

◆ mFontLayer

QFont QgsLayerTreeModel::mFontLayer
protected

Definition at line 525 of file qgslayertreemodel.h.

◆ mHitTestResults

QMap<QString, QSet<QString> > QgsLayerTreeModel::mHitTestResults
protected

Definition at line 533 of file qgslayertreemodel.h.

◆ mHitTestTask

QPointer< QgsMapHitTestTask > QgsLayerTreeModel::mHitTestTask
protected

Definition at line 531 of file qgslayertreemodel.h.

◆ mInvalidatedNodes

QSet<QgsLayerTreeLayer *> QgsLayerTreeModel::mInvalidatedNodes
protected

Keep track of layer nodes for which the legend size needs to be recalculated.

Definition at line 523 of file qgslayertreemodel.h.

◆ mLayerStyleOverrides

QMap<QString, QString> QgsLayerTreeModel::mLayerStyleOverrides
protected

Overrides of map layers' styles: key = layer ID, value = style XML.

This allows showing a legend that is different from the current style of layers

Definition at line 514 of file qgslayertreemodel.h.

◆ mLegend

QHash<QgsLayerTreeLayer *, LayerLegendData> QgsLayerTreeModel::mLegend
protected

Per layer data about layer's legend nodes.

Definition at line 517 of file qgslayertreemodel.h.

◆ mLegendFilterByScale

double QgsLayerTreeModel::mLegendFilterByScale = 0
protected

scale denominator for filtering of legend nodes (<= 0 means no filtering)

Definition at line 529 of file qgslayertreemodel.h.

◆ mLegendMapViewDpi

int QgsLayerTreeModel::mLegendMapViewDpi = 0
protected

Definition at line 538 of file qgslayertreemodel.h.

◆ mLegendMapViewMupp

double QgsLayerTreeModel::mLegendMapViewMupp = 0
protected

Definition at line 537 of file qgslayertreemodel.h.

◆ mLegendMapViewScale

double QgsLayerTreeModel::mLegendMapViewScale = 0
protected

Definition at line 539 of file qgslayertreemodel.h.

◆ mRootNode

QgsLayerTree* QgsLayerTreeModel::mRootNode = nullptr
protected

Pointer to the root node of the layer tree. Not owned by the model.

Definition at line 447 of file qgslayertreemodel.h.

◆ mTargetScreenProperties

QSet< QgsScreenProperties > QgsLayerTreeModel::mTargetScreenProperties
protected

Definition at line 542 of file qgslayertreemodel.h.


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