QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
|
Layer tree group node serves as a container for layers and further groups. More...
#include <qgslayertreegroup.h>
Public Member Functions | |
QgsLayerTreeGroup (const QgsLayerTreeGroup &other) | |
QgsLayerTreeGroup (const QString &name=QString(), bool checked=true) | |
Constructor. More... | |
void | addChildNode (QgsLayerTreeNode *node) |
Append an existing node. More... | |
QgsLayerTreeGroup * | addGroup (const QString &name) |
Append a new group node with given name. More... | |
QgsLayerTreeLayer * | addLayer (QgsMapLayer *layer) |
Append a new layer node for given map layer. More... | |
QgsLayerTreeGroup * | clone () const override |
Returns a clone of the group. More... | |
QgsGroupLayer * | convertToGroupLayer (const QgsGroupLayer::LayerOptions &options) |
Converts the group to a QgsGroupLayer. More... | |
QString | dump () const override |
Returns text representation of the tree. More... | |
QgsLayerTreeGroup * | findGroup (const QString &name) |
Find group node with specified name. More... | |
QList< QgsLayerTreeGroup * > | findGroups (bool recursive=false) const |
Find group layer nodes. More... | |
QgsLayerTreeLayer * | findLayer (const QString &layerId) const |
Find layer node representing the map layer specified by its ID. More... | |
QgsLayerTreeLayer * | findLayer (QgsMapLayer *layer) const |
Find layer node representing the map layer. More... | |
QStringList | findLayerIds () const |
Find layer IDs used in all layer nodes. More... | |
QList< QgsLayerTreeLayer * > | findLayers () const |
Find all layer nodes. More... | |
QgsGroupLayer * | groupLayer () |
Returns a reference to the associated group layer, if the layer tree group will be treated as group layer during map rendering. More... | |
void | insertChildNode (int index, QgsLayerTreeNode *node) |
Insert existing node at specified position. More... | |
void | insertChildNodes (int index, const QList< QgsLayerTreeNode * > &nodes) |
Insert existing nodes at specified position. More... | |
QgsLayerTreeGroup * | insertGroup (int index, const QString &name) |
Insert a new group node with given name at specified position. More... | |
QgsLayerTreeLayer * | insertLayer (int index, QgsMapLayer *layer) |
Insert a new layer node for given map layer at specified position. More... | |
bool | isMutuallyExclusive () const |
Returns whether the group is mutually exclusive (only one child can be checked at a time) More... | |
QList< QgsMapLayer * > | layerOrderRespectingGroupLayers () const |
Returns an ordered list of map layers in the group, ignoring any layers which are child layers of QgsGroupLayers. More... | |
QString | name () const override |
Returns the group's name. More... | |
void | readChildrenFromXml (QDomElement &element, const QgsReadWriteContext &context) |
Read children from XML and append them to the group. More... | |
void | removeAllChildren () |
Remove all child nodes. More... | |
void | removeChildNode (QgsLayerTreeNode *node) |
Remove a child node from this group. More... | |
void | removeChildren (int from, int count) |
Remove child nodes from index "from". More... | |
void | removeChildrenGroupWithoutLayers () |
Remove all child group nodes without layers. More... | |
void | removeLayer (QgsMapLayer *layer) |
Remove map layer's node from this group. More... | |
void | resolveReferences (const QgsProject *project, bool looseMatching=false) override |
Calls resolveReferences() on child tree nodes. More... | |
void | setGroupLayer (QgsGroupLayer *layer) |
Sets the associated group layer, if the layer tree group will be treated as group layer during map rendering. More... | |
void | setIsMutuallyExclusive (bool enabled, int initialChildIndex=-1) |
Set whether the group is mutually exclusive (only one child can be checked at a time). More... | |
void | setItemVisibilityCheckedRecursive (bool checked) override |
Check or uncheck a node and all its children (taking into account exclusion rules) More... | |
void | setName (const QString &n) override |
Sets the group's name. More... | |
void | writeXml (QDomElement &parentElement, const QgsReadWriteContext &context) override |
Write group (tree) as XML element <layer-tree-group> and add it to the given parent element. More... | |
Public Member Functions inherited from QgsLayerTreeNode | |
~QgsLayerTreeNode () override | |
QList< QgsLayerTreeNode * > | abandonChildren () |
Removes the childrens, disconnect all the forwarded and external signals and sets their parent to nullptr . More... | |
QList< QgsMapLayer * > | checkedLayers () const |
Returns a list of any checked layers which belong to this node or its children. More... | |
QList< QgsLayerTreeNode * > | children () |
Gets list of children of the node. Children are owned by the parent. More... | |
QList< QgsLayerTreeNode * > | children () const |
Gets list of children of the node. Children are owned by the parent. More... | |
virtual QgsLayerTreeNode * | clone () const =0 |
Create a copy of the node. Returns new instance. More... | |
QStringList | customProperties () const |
Returns list of keys stored in custom properties. More... | |
QVariant | customProperty (const QString &key, const QVariant &defaultValue=QVariant()) const |
Read a custom property from layer. Properties are stored in a map and saved in project file. More... | |
int | depth () const |
Returns the depth of this node, i.e. More... | |
virtual QString | dump () const =0 |
Returns string with layer tree structure. For debug purposes only. More... | |
bool | isExpanded () const |
Returns whether the node should be shown as expanded or collapsed in GUI. More... | |
bool | isItemVisibilityCheckedRecursive () const |
Returns whether this node is checked and all its children. More... | |
bool | isItemVisibilityUncheckedRecursive () const |
Returns whether this node is unchecked and all its children. More... | |
bool | isVisible () const |
Returns whether a node is really visible (ie checked and all its ancestors checked as well) More... | |
bool | itemVisibilityChecked () const |
Returns whether a node is checked (independently of its ancestors or children) More... | |
virtual QString | name () const =0 |
Returns name of the node. More... | |
NodeType | nodeType () const |
Find out about type of the node. It is usually shorter to use convenience functions from QgsLayerTree namespace for that. More... | |
QgsLayerTreeNode * | parent () |
Gets pointer to the parent. If parent is nullptr , the node is a root node. More... | |
void | removeCustomProperty (const QString &key) |
Remove a custom property from layer. Properties are stored in a map and saved in project file. More... | |
virtual void | resolveReferences (const QgsProject *project, bool looseMatching=false)=0 |
Turn textual references to layers into map layer object from project. More... | |
void | setCustomProperty (const QString &key, const QVariant &value) |
Sets a custom property for the node. Properties are stored in a map and saved in project file. More... | |
void | setExpanded (bool expanded) |
Sets whether the node should be shown as expanded or collapsed in GUI. More... | |
void | setItemVisibilityChecked (bool checked) |
Check or uncheck a node (independently of its ancestors or children) More... | |
void | setItemVisibilityCheckedParentRecursive (bool checked) |
Check or uncheck a node and all its parents. More... | |
virtual void | setItemVisibilityCheckedRecursive (bool checked) |
Check or uncheck a node and all its children (taking into account exclusion rules) More... | |
virtual void | setName (const QString &name)=0 |
Set name of the node. More... | |
bool | takeChild (QgsLayerTreeNode *node) |
Remove a child from a node. More... | |
virtual void | writeXml (QDomElement &parentElement, const QgsReadWriteContext &context)=0 |
Write layer tree to XML. More... | |
Static Public Member Functions | |
static QgsLayerTreeGroup * | readXml (QDomElement &element, const QgsProject *project, const QgsReadWriteContext &context) |
Read group (tree) from XML element <layer-tree-group> and return the newly created group (or nullptr on error). More... | |
static QgsLayerTreeGroup * | readXml (QDomElement &element, const QgsReadWriteContext &context) |
Read group (tree) from XML element <layer-tree-group> and return the newly created group (or nullptr on error). More... | |
Static Public Member Functions inherited from QgsLayerTreeNode | |
static QgsLayerTreeNode * | readXml (QDomElement &element, const QgsProject *project) |
Read layer tree from XML. More... | |
static QgsLayerTreeNode * | readXml (QDomElement &element, const QgsReadWriteContext &context) |
Read layer tree from XML. More... | |
Protected Slots | |
void | nodeVisibilityChanged (QgsLayerTreeNode *node) |
Protected Member Functions | |
virtual void | makeOrphan () override |
Sets parent to nullptr and disconnects all external and forwarded signals. More... | |
void | updateChildVisibilityMutuallyExclusive () |
Set check state of children - if mutually exclusive. More... | |
Protected Member Functions inherited from QgsLayerTreeNode | |
QgsLayerTreeNode (const QgsLayerTreeNode &other) | |
QgsLayerTreeNode (NodeType t, bool checked=true) | |
Constructor. More... | |
void | insertChildrenPrivate (int index, const QList< QgsLayerTreeNode * > &nodes) |
Low-level insertion of children to the node. The children must not have any parent yet! More... | |
virtual void | makeOrphan () |
Sets parent to nullptr and disconnects all external and forwarded signals. More... | |
void | readCommonXml (QDomElement &element) |
Read common XML elements. More... | |
void | removeChildrenPrivate (int from, int count, bool destroy=true) |
Low-level removal of children from the node. More... | |
void | writeCommonXml (QDomElement &element) |
Write common XML elements. More... | |
Protected Attributes | |
bool | mChangingChildVisibility = false |
bool | mMutuallyExclusive = false |
Whether the group is mutually exclusive (i.e. only one child can be checked at a time) More... | |
int | mMutuallyExclusiveChildIndex = -1 |
Keeps track which child has been most recently selected (so if the whole group is unchecked and checked again, we know which child to check) More... | |
QString | mName |
Protected Attributes inherited from QgsLayerTreeNode | |
bool | mChecked |
QList< QgsLayerTreeNode * > | mChildren |
list of children - node is responsible for their deletion More... | |
bool | mExpanded |
whether the node should be shown in GUI as expanded More... | |
NodeType | mNodeType |
type of the node - determines which subclass is used More... | |
QgsLayerTreeNode * | mParent = nullptr |
pointer to the parent node - nullptr in case of root node More... | |
QgsObjectCustomProperties | mProperties |
custom properties attached to the node More... | |
Additional Inherited Members | |
Public Types inherited from QgsLayerTreeNode | |
enum | NodeType { NodeGroup , NodeLayer } |
Enumeration of possible tree node types. More... | |
Signals inherited from QgsLayerTreeNode | |
void | addedChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo) |
Emitted when one or more nodes have been added to a node within the tree. More... | |
void | customPropertyChanged (QgsLayerTreeNode *node, const QString &key) |
Emitted when a custom property of a node within the tree has been changed or removed. More... | |
void | expandedChanged (QgsLayerTreeNode *node, bool expanded) |
Emitted when the collapsed/expanded state of a node within the tree has been changed. More... | |
void | nameChanged (QgsLayerTreeNode *node, QString name) |
Emitted when the name of the node is changed. More... | |
void | removedChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo) |
Emitted when one or more nodes has been removed from a node within the tree. More... | |
void | visibilityChanged (QgsLayerTreeNode *node) |
Emitted when check state of a node within the tree has been changed. More... | |
void | willAddChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo) |
Emitted when one or more nodes will be added to a node within the tree. More... | |
void | willRemoveChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo) |
Emitted when one or more nodes will be removed from a node within the tree. More... | |
Layer tree group node serves as a container for layers and further groups.
Group names do not need to be unique within one tree nor within one parent.
While a layer tree group is typically used for hierarchical organisation of a QgsProject, they can optionally be associated with a QgsGroupLayer for map rendering purposes.
Definition at line 40 of file qgslayertreegroup.h.
QgsLayerTreeGroup::QgsLayerTreeGroup | ( | const QString & | name = QString() , |
bool | checked = true |
||
) |
Constructor.
Definition at line 27 of file qgslayertreegroup.cpp.
QgsLayerTreeGroup::QgsLayerTreeGroup | ( | const QgsLayerTreeGroup & | other | ) |
Definition at line 34 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::addChildNode | ( | QgsLayerTreeNode * | node | ) |
Append an existing node.
The node must not have a parent yet. The node will be owned by this group.
Definition at line 143 of file qgslayertreegroup.cpp.
QgsLayerTreeGroup * QgsLayerTreeGroup::addGroup | ( | const QString & | name | ) |
Append a new group node with given name.
Newly created node is owned by this group.
Definition at line 75 of file qgslayertreegroup.cpp.
QgsLayerTreeLayer * QgsLayerTreeGroup::addLayer | ( | QgsMapLayer * | layer | ) |
Append a new layer node for given map layer.
The newly created node is owned by this group.
Definition at line 94 of file qgslayertreegroup.cpp.
|
overridevirtual |
Returns a clone of the group.
The children are cloned too.
Implements QgsLayerTreeNode.
Definition at line 409 of file qgslayertreegroup.cpp.
QgsGroupLayer * QgsLayerTreeGroup::convertToGroupLayer | ( | const QgsGroupLayer::LayerOptions & | options | ) |
Converts the group to a QgsGroupLayer.
This method will convert the layer tree group to an equivalent QgsGroupLayer, and return the result. The caller takes ownership of the returned layer, and it is the caller's responsibility to add the layer to the associated QgsProject.
If the group is already associated with a group layer (see groupLayer()), nullptr
will be returned.
Definition at line 472 of file qgslayertreegroup.cpp.
|
overridevirtual |
Returns text representation of the tree.
For debugging purposes only.
Implements QgsLayerTreeNode.
Definition at line 398 of file qgslayertreegroup.cpp.
QgsLayerTreeGroup * QgsLayerTreeGroup::findGroup | ( | const QString & | name | ) |
Find group node with specified name.
Searches recursively the whole sub-tree.
Definition at line 290 of file qgslayertreegroup.cpp.
QList< QgsLayerTreeGroup * > QgsLayerTreeGroup::findGroups | ( | bool | recursive = false | ) | const |
Find group layer nodes.
Searches recursively the whole sub-tree, if recursive is set.
Definition at line 310 of file qgslayertreegroup.cpp.
QgsLayerTreeLayer * QgsLayerTreeGroup::findLayer | ( | const QString & | layerId | ) | const |
Find layer node representing the map layer specified by its ID.
Searches recursively the whole sub-tree.
Definition at line 229 of file qgslayertreegroup.cpp.
QgsLayerTreeLayer * QgsLayerTreeGroup::findLayer | ( | QgsMapLayer * | layer | ) | const |
Find layer node representing the map layer.
Searches recursively the whole sub-tree.
Definition at line 221 of file qgslayertreegroup.cpp.
QStringList QgsLayerTreeGroup::findLayerIds | ( | ) | const |
Find layer IDs used in all layer nodes.
Searches recursively the whole sub-tree.
Definition at line 498 of file qgslayertreegroup.cpp.
QList< QgsLayerTreeLayer * > QgsLayerTreeGroup::findLayers | ( | ) | const |
Find all layer nodes.
Searches recursively the whole sub-tree.
Definition at line 249 of file qgslayertreegroup.cpp.
QgsGroupLayer * QgsLayerTreeGroup::groupLayer | ( | ) |
Returns a reference to the associated group layer, if the layer tree group will be treated as group layer during map rendering.
Definition at line 461 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::insertChildNode | ( | int | index, |
QgsLayerTreeNode * | node | ||
) |
Insert existing node at specified position.
The node must not have a parent yet. The node will be owned by this group.
Definition at line 106 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::insertChildNodes | ( | int | index, |
const QList< QgsLayerTreeNode * > & | nodes | ||
) |
Insert existing nodes at specified position.
The nodes must not have a parent yet. The nodes will be owned by this group.
Definition at line 113 of file qgslayertreegroup.cpp.
QgsLayerTreeGroup * QgsLayerTreeGroup::insertGroup | ( | int | index, |
const QString & | name | ||
) |
Insert a new group node with given name at specified position.
The newly created node is owned by this group.
Definition at line 68 of file qgslayertreegroup.cpp.
QgsLayerTreeLayer * QgsLayerTreeGroup::insertLayer | ( | int | index, |
QgsMapLayer * | layer | ||
) |
Insert a new layer node for given map layer at specified position.
The newly created node is owned by this group.
Definition at line 82 of file qgslayertreegroup.cpp.
bool QgsLayerTreeGroup::isMutuallyExclusive | ( | ) | const |
Returns whether the group is mutually exclusive (only one child can be checked at a time)
Definition at line 428 of file qgslayertreegroup.cpp.
QList< QgsMapLayer * > QgsLayerTreeGroup::layerOrderRespectingGroupLayers | ( | ) | const |
Returns an ordered list of map layers in the group, ignoring any layers which are child layers of QgsGroupLayers.
Searches recursively the whole sub-tree.
Definition at line 262 of file qgslayertreegroup.cpp.
|
overrideprotectedvirtual |
Sets parent to nullptr
and disconnects all external and forwarded signals.
Reimplemented from QgsLayerTreeNode.
Definition at line 553 of file qgslayertreegroup.cpp.
|
overridevirtual |
Returns the group's name.
Implements QgsLayerTreeNode.
Definition at line 53 of file qgslayertreegroup.cpp.
|
protectedslot |
Definition at line 511 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::readChildrenFromXml | ( | QDomElement & | element, |
const QgsReadWriteContext & | context | ||
) |
Read children from XML and append them to the group.
Does not resolve textual references to layers. Call resolveReferences() afterwards to do it.
Definition at line 382 of file qgslayertreegroup.cpp.
|
static |
Read group (tree) from XML element <layer-tree-group> and return the newly created group (or nullptr
on error).
Also resolves textual references to layers from the project (calls resolveReferences() internally).
Definition at line 352 of file qgslayertreegroup.cpp.
|
static |
Read group (tree) from XML element <layer-tree-group> and return the newly created group (or nullptr
on error).
Does not resolve textual references to layers. Call resolveReferences() afterwards to do it.
Definition at line 327 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::removeAllChildren | ( | ) |
Remove all child nodes.
The nodes will be deleted.
Definition at line 216 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::removeChildNode | ( | QgsLayerTreeNode * | node | ) |
Remove a child node from this group.
The node will be deleted.
Definition at line 150 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::removeChildren | ( | int | from, |
int | count | ||
) |
Remove child nodes from index "from".
The nodes will be deleted.
Definition at line 177 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::removeChildrenGroupWithoutLayers | ( | ) |
Remove all child group nodes without layers.
The groupnodes will be deleted.
Definition at line 197 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::removeLayer | ( | QgsMapLayer * | layer | ) |
Remove map layer's node from this group.
The node will be deleted.
Definition at line 159 of file qgslayertreegroup.cpp.
|
overridevirtual |
Calls resolveReferences() on child tree nodes.
Implements QgsLayerTreeNode.
Definition at line 414 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::setGroupLayer | ( | QgsGroupLayer * | layer | ) |
Sets the associated group layer, if the layer tree group will be treated as group layer during map rendering.
This method does not take ownership of the group layer, and only a weak reference to the layer is stored.
Definition at line 466 of file qgslayertreegroup.cpp.
void QgsLayerTreeGroup::setIsMutuallyExclusive | ( | bool | enabled, |
int | initialChildIndex = -1 |
||
) |
Set whether the group is mutually exclusive (only one child can be checked at a time).
The initial child index determines which child should be initially checked. The default value of -1 will determine automatically (either first one currently checked or none)
Definition at line 433 of file qgslayertreegroup.cpp.
|
overridevirtual |
Check or uncheck a node and all its children (taking into account exclusion rules)
Reimplemented from QgsLayerTreeNode.
Definition at line 596 of file qgslayertreegroup.cpp.
|
overridevirtual |
Sets the group's name.
Implements QgsLayerTreeNode.
Definition at line 58 of file qgslayertreegroup.cpp.
|
protected |
Set check state of children - if mutually exclusive.
Definition at line 534 of file qgslayertreegroup.cpp.
|
overridevirtual |
Write group (tree) as XML element <layer-tree-group> and add it to the given parent element.
Implements QgsLayerTreeNode.
Definition at line 360 of file qgslayertreegroup.cpp.
|
protected |
Definition at line 284 of file qgslayertreegroup.h.
|
protected |
Whether the group is mutually exclusive (i.e. only one child can be checked at a time)
Definition at line 287 of file qgslayertreegroup.h.
|
protected |
Keeps track which child has been most recently selected (so if the whole group is unchecked and checked again, we know which child to check)
Definition at line 293 of file qgslayertreegroup.h.
|
protected |
Definition at line 282 of file qgslayertreegroup.h.