QGIS API Documentation
3.2.0-Bonn (bc43194)
|
The QgsLayerTreeModel class is model implementation for Qt item views framework. More...
#include <qgslayertreemodel.h>
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, AllowNodeReorder = 0x1000, AllowNodeRename = 0x2000, AllowNodeChangeVisibility = 0x4000, AllowLegendChangeState = 0x8000, ActionHierarchical = 0x10000 } |
Public Member Functions | |
QgsLayerTreeModel (QgsLayerTree *rootNode, QObject *parent=nullptr) | |
Construct a new tree model with given layer tree (root node must not be null pointer). More... | |
~QgsLayerTreeModel () override | |
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 |
QgsLayerTreeModelLegendNode * | 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. More... | |
Qt::ItemFlags | flags (const QModelIndex &index) const override |
Flags | flags () const |
Returns OR-ed combination of model flags. More... | |
QModelIndex | index (int row, int column, const QModelIndex &parent=QModelIndex()) const override |
QgsLayerTreeNode * | index2node (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 QgsMapSettings * | legendFilterMapSettings () const |
Returns the current map settings used for the current legend filter (or null 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... | |
QgsLayerTreeModelLegendNode * | legendNodeEmbeddedInParent (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 |
QgsLayerTree * | rootGroup () const |
Returns pointer to the root node of the layer tree. Always a non-null pointer. 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 ¤tIndex) |
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 | 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) |
Set 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... | |
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... | |
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 currectly. More... | |
void | setRootGroup (QgsLayerTree *newRootGroup) |
Reset the model and use a new root group node. More... | |
Qt::DropActions | supportedDropActions () const override |
bool | testFlag (Flag f) const |
Check whether a flag is enabled. More... | |
Static Public Member Functions | |
static QgsLayerTreeModelLegendNode * | index2legendNode (const QModelIndex &index) |
Returns legend node for given index. More... | |
Protected Slots | |
void | invalidateLegendMapBasedData () |
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) |
Static Protected Member Functions | |
static QIcon | iconGroup () |
Protected Attributes | |
int | mAutoCollapseLegendNodesCount |
Minimal number of nodes when legend should be automatically collapsed. -1 = disabled. More... | |
QPersistentModelIndex | mCurrentIndex |
Current index - will be underlined. More... | |
QTimer | mDeferLegendInvalidationTimer |
Flags | mFlags |
Sets of flags for the model. More... | |
QFont | mFontGroup |
QFont | mFontLayer |
QMap< QString, QString > | mLayerStyleOverrides |
Overrides of map layers' styles: key = layer ID, value = style XML. More... | |
QMap< QgsLayerTreeLayer *, LayerLegendData > | mLegend |
Per layer data about layer's legend nodes. More... | |
double | mLegendFilterByScale |
scale denominator for filtering of legend nodes (<= 0 means no filtering) More... | |
std::unique_ptr< QgsMapHitTest > | mLegendFilterHitTest |
std::unique_ptr< QgsMapSettings > | mLegendFilterMapSettings |
bool | mLegendFilterUsesExtent |
whether to use map filtering More... | |
int | mLegendMapViewDpi |
double | mLegendMapViewMupp |
double | mLegendMapViewScale |
QgsLayerTree * | mRootNode = nullptr |
Pointer to the root node of the layer tree. Not owned by the model. More... | |
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.
Definition at line 55 of file qgslayertreemodel.h.
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. |
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) |
Definition at line 95 of file qgslayertreemodel.h.
|
explicit |
Construct a new tree model with given layer tree (root node must not be null pointer).
The root node is not transferred by the model.
Definition at line 36 of file qgslayertreemodel.cpp.
|
override |
Definition at line 55 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1179 of file qgslayertreemodel.cpp.
|
inline |
Returns at what number of legend nodes the layer node should be collapsed. -1 means no auto-collapse (default).
Definition at line 209 of file qgslayertreemodel.h.
|
override |
Definition at line 90 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 824 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 902 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 924 of file qgslayertreemodel.cpp.
QModelIndex QgsLayerTreeModel::currentIndex | ( | ) | const |
Gets index of the item marked as current. Item marked as current is underlined.
Definition at line 526 of file qgslayertreemodel.cpp.
|
override |
Definition at line 155 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 883 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 913 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 940 of file qgslayertreemodel.cpp.
|
override |
Definition at line 1020 of file qgslayertreemodel.cpp.
|
protected |
Filter nodes from QgsMapLayerLegend according to the current filtering rules.
Definition at line 1107 of file qgslayertreemodel.cpp.
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.
layerId | map layer ID |
ruleKey | legend node rule key |
Definition at line 1468 of file qgslayertreemodel.cpp.
|
override |
Definition at line 323 of file qgslayertreemodel.cpp.
QgsLayerTreeModel::Flags QgsLayerTreeModel::flags | ( | ) | const |
Returns OR-ed combination of model flags.
Definition at line 1092 of file qgslayertreemodel.cpp.
|
staticprotected |
Definition at line 1102 of file qgslayertreemodel.cpp.
|
override |
Definition at line 96 of file qgslayertreemodel.cpp.
|
static |
Returns legend node for given index.
Returns null for invalid index
Definition at line 1314 of file qgslayertreemodel.cpp.
QgsLayerTreeNode * QgsLayerTreeModel::index2node | ( | const QModelIndex & | index | ) | const |
Returns layer tree node for given index.
Returns root node for invalid index. Returns null pointer if index does not refer to a layer tree node (e.g. it is a legend node)
Definition at line 60 of file qgslayertreemodel.cpp.
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 460 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 140 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 1498 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 775 of file qgslayertreemodel.cpp.
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)
Definition at line 1451 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 794 of file qgslayertreemodel.cpp.
QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::layerOriginalLegendNodes | ( | QgsLayerTreeLayer * | nodeLayer | ) |
Returns original (unfiltered) list of legend nodes attached to a particular layer node.
Definition at line 1463 of file qgslayertreemodel.cpp.
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 671 of file qgslayertreemodel.cpp.
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 568 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1157 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1431 of file qgslayertreemodel.cpp.
|
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.
Definition at line 227 of file qgslayertreemodel.h.
|
inline |
Returns the current map settings used for the current legend filter (or null if none is enabled)
Definition at line 251 of file qgslayertreemodel.h.
|
protected |
Definition at line 1442 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1490 of file qgslayertreemodel.cpp.
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 null will receive values. If there are no valid map view data (from previous call to setLegendMapViewData()), returned values are zeros.
Definition at line 664 of file qgslayertreemodel.cpp.
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 1320 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1414 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 812 of file qgslayertreemodel.cpp.
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 1436 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1422 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1384 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1349 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1394 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1373 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1359 of file qgslayertreemodel.cpp.
|
override |
Definition at line 993 of file qgslayertreemodel.cpp.
|
override |
Definition at line 985 of file qgslayertreemodel.cpp.
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 424 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 702 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 746 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 753 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 763 of file qgslayertreemodel.cpp.
|
protectedslot |
Updates model when node's name has changed.
Definition at line 736 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 723 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 728 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 681 of file qgslayertreemodel.cpp.
|
protectedslot |
Definition at line 712 of file qgslayertreemodel.cpp.
|
override |
Definition at line 118 of file qgslayertreemodel.cpp.
|
protected |
emit dataChanged() for layer tree node items
Definition at line 947 of file qgslayertreemodel.cpp.
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 506 of file qgslayertreemodel.cpp.
|
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 961 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1168 of file qgslayertreemodel.cpp.
|
override |
Definition at line 1068 of file qgslayertreemodel.cpp.
QgsLayerTree * QgsLayerTreeModel::rootGroup | ( | ) | const |
Returns pointer to the root node of the layer tree. Always a non-null pointer.
Definition at line 486 of file qgslayertreemodel.cpp.
|
override |
Definition at line 70 of file qgslayertreemodel.cpp.
|
inline |
Sets at what number of legend nodes the layer node should be collapsed. Setting -1 disables the auto-collapse (default).
Definition at line 207 of file qgslayertreemodel.h.
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 531 of file qgslayertreemodel.cpp.
|
override |
Definition at line 360 of file qgslayertreemodel.cpp.
void QgsLayerTreeModel::setFlag | ( | QgsLayerTreeModel::Flag | f, |
bool | on = true |
||
) |
Enable or disable a model flag.
Definition at line 1084 of file qgslayertreemodel.cpp.
void QgsLayerTreeModel::setFlags | ( | QgsLayerTreeModel::Flags | f | ) |
Sets OR-ed combination of model flags.
Definition at line 1079 of file qgslayertreemodel.cpp.
void QgsLayerTreeModel::setLayerStyleOverrides | ( | const QMap< QString, QString > & | overrides | ) |
Set 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 676 of file qgslayertreemodel.cpp.
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 543 of file qgslayertreemodel.cpp.
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.
settings | Map settings. Setting a null pointer or invalid settings will disable any filter. Ownership is not changed, a copy is made |
useExtent | Whether to use the extent of the map settings as a first spatial filter on legend nodes |
polygon | If not empty, this polygon will be used instead of the map extent to filter legend nodes |
useExpressions | Whether to use legend node filter expressions |
Definition at line 596 of file qgslayertreemodel.cpp.
void QgsLayerTreeModel::setLegendFilterByMap | ( | const QgsMapSettings * | settings | ) |
Force only display of legend nodes which are valid for given map settings.
Setting null pointer or invalid map settings will disable the functionality. Ownership of map settings pointer does not change, a copy is made.
Definition at line 591 of file qgslayertreemodel.cpp.
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.
Definition at line 581 of file qgslayertreemodel.cpp.
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 currectly.
Definition at line 649 of file qgslayertreemodel.cpp.
void QgsLayerTreeModel::setRootGroup | ( | QgsLayerTree * | newRootGroup | ) |
Reset the model and use a new root group node.
Definition at line 491 of file qgslayertreemodel.cpp.
|
override |
Definition at line 980 of file qgslayertreemodel.cpp.
bool QgsLayerTreeModel::testFlag | ( | QgsLayerTreeModel::Flag | f | ) | const |
Check whether a flag is enabled.
Definition at line 1097 of file qgslayertreemodel.cpp.
|
protected |
Definition at line 1257 of file qgslayertreemodel.cpp.
|
protected |
Minimal number of nodes when legend should be automatically collapsed. -1 = disabled.
Definition at line 354 of file qgslayertreemodel.h.
|
protected |
Current index - will be underlined.
Definition at line 352 of file qgslayertreemodel.h.
|
protected |
Definition at line 433 of file qgslayertreemodel.h.
|
protected |
Sets of flags for the model.
Definition at line 350 of file qgslayertreemodel.h.
|
protected |
Definition at line 419 of file qgslayertreemodel.h.
|
protected |
Definition at line 418 of file qgslayertreemodel.h.
|
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 413 of file qgslayertreemodel.h.
|
protected |
Per layer data about layer's legend nodes.
Definition at line 416 of file qgslayertreemodel.h.
|
protected |
scale denominator for filtering of legend nodes (<= 0 means no filtering)
Definition at line 422 of file qgslayertreemodel.h.
|
protected |
Definition at line 425 of file qgslayertreemodel.h.
|
protected |
Definition at line 424 of file qgslayertreemodel.h.
|
protected |
whether to use map filtering
Definition at line 428 of file qgslayertreemodel.h.
|
protected |
Definition at line 431 of file qgslayertreemodel.h.
|
protected |
Definition at line 430 of file qgslayertreemodel.h.
|
protected |
Definition at line 432 of file qgslayertreemodel.h.
|
protected |
Pointer to the root node of the layer tree. Not owned by the model.
Definition at line 348 of file qgslayertreemodel.h.