QGIS API Documentation  2.6.0-Brighton
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | 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]

Public Types

enum  Flag {
  ShowLegend = 0x0001, ShowSymbology = 0x0001, ShowRasterPreviewIcon = 0x0002, AllowNodeReorder = 0x1000,
  AllowNodeRename = 0x2000, AllowNodeChangeVisibility = 0x4000, AllowLegendChangeState = 0x8000, AllowSymbologyChangeState = 0x8000
}

Public Member Functions

 QgsLayerTreeModel (QgsLayerTreeGroup *rootNode, QObject *parent=0)
 Construct a new tree model with given layer tree (root node must not be null pointer).
 ~QgsLayerTreeModel ()
int rowCount (const QModelIndex &parent=QModelIndex()) const
int columnCount (const QModelIndex &parent=QModelIndex()) const
QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const
QModelIndex parent (const QModelIndex &child) const
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const
Qt::ItemFlags flags (const QModelIndex &index) const
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Qt::DropActions supportedDropActions () const
QStringList mimeTypes () const
QMimeData * mimeData (const QModelIndexList &indexes) const
bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
bool removeRows (int row, int count, const QModelIndex &parent=QModelIndex())
void setFlags (Flags f)
 Set OR-ed combination of model flags.
void setFlag (Flag f, bool on=true)
 Enable or disable a model flag.
Flags flags () const
 Return OR-ed combination of model flags.
bool testFlag (Flag f) const
 Check whether a flag is enabled.
QgsLayerTreeNodeindex2node (const QModelIndex &index) const
 Return layer tree node for given index.
QModelIndex node2index (QgsLayerTreeNode *node) const
 Return index for a given node. If the node does not belong to the layer tree, the result is undefined.
QList< QgsLayerTreeNode * > indexes2nodes (const QModelIndexList &list, bool skipInternal=false) const
 Convert a list of indexes to a list of layer tree nodes.
QModelIndex legendNode2index (QgsLayerTreeModelLegendNode *legendNode)
 Return index for a given legend node.
QList
< QgsLayerTreeModelLegendNode * > 
layerLegendNodes (QgsLayerTreeLayer *nodeLayer)
 Return list of legend nodes attached to a particular layer node.
QgsLayerTreeGrouprootGroup () const
 Return pointer to the root node of the layer tree. Always a non-null pointer.
void setRootGroup (QgsLayerTreeGroup *newRootGroup)
 Reset the model and use a new root group node.
void refreshLayerLegend (QgsLayerTreeLayer *nodeLayer)
 Force a refresh of legend nodes of a layer node.
QModelIndex currentIndex () const
 Get index of the item marked as current. Item marked as current is underlined.
void setCurrentIndex (const QModelIndex &currentIndex)
 Set index of the current item. May be used by view. Item marked as current is underlined.
void setLayerTreeNodeFont (int nodeType, const QFont &font)
 Set font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration.
QFont layerTreeNodeFont (int nodeType) const
 Get font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration.
void setAutoCollapseLegendNodes (int nodeCount)
 Set at what number of legend nodes the layer node should be collapsed. Setting -1 disables the auto-collapse (default).
int autoCollapseLegendNodes () const
 Return at what number of legend nodes the layer node should be collapsed. -1 means no auto-collapse (default).
void setLegendFilterByScale (double scaleDenominator)
 Force only display of legend nodes which are valid for given scale denominator.
double legendFilterByScale () const
void setLegendFilterByMap (const QgsMapSettings *settings)
 Force only display of legend nodes which are valid for given map settings.
const QgsMapSettingslegendFilterByMap () const
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.
void legendMapViewData (double *mapUnitsPerPixel, int *dpi, double *scale)
 Get hints about map view - to be used in legend nodes.
Q_DECL_DEPRECATED bool isIndexSymbologyNode (const QModelIndex &index) const
 Return true if index represents a legend node (instead of layer node)
Q_DECL_DEPRECATED
QgsLayerTreeLayer
layerNodeForSymbologyNode (const QModelIndex &index) const
 Return layer node to which a legend node belongs to.
Q_DECL_DEPRECATED void refreshLayerSymbology (QgsLayerTreeLayer *nodeLayer)
Q_DECL_DEPRECATED void setAutoCollapseSymbologyNodes (int nodeCount)
Q_DECL_DEPRECATED int autoCollapseSymbologyNodes () const

Static Public Member Functions

static
QgsLayerTreeModelLegendNode
index2legendNode (const QModelIndex &index)
 Return legend node for given index.

Protected Slots

void nodeWillAddChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo)
void nodeAddedChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo)
void nodeWillRemoveChildren (QgsLayerTreeNode *node, int indexFrom, int indexTo)
void nodeRemovedChildren ()
void nodeVisibilityChanged (QgsLayerTreeNode *node)
void nodeCustomPropertyChanged (QgsLayerTreeNode *node, const QString &key)
void nodeLayerLoaded ()
void nodeLayerWillBeUnloaded ()
void layerLegendChanged ()
void layerNeedsUpdate ()
void legendNodeDataChanged ()

Protected Member Functions

void removeLegendFromLayer (QgsLayerTreeLayer *nodeLayer)
void addLegendToLayer (QgsLayerTreeLayer *nodeL)
void connectToLayer (QgsLayerTreeLayer *nodeLayer)
void disconnectFromLayer (QgsLayerTreeLayer *nodeLayer)
void connectToLayers (QgsLayerTreeGroup *parentGroup)
void disconnectFromLayers (QgsLayerTreeGroup *parentGroup)
void connectToRootNode ()
void disconnectFromRootNode ()
void recursivelyEmitDataChanged (const QModelIndex &index=QModelIndex())
 emit dataChanged() for layer tree node items
QList
< QgsLayerTreeModelLegendNode * > 
filterLegendNodes (const QList< QgsLayerTreeModelLegendNode * > &nodes)
 Filter nodes from QgsMapLayerLegend according to the current filtering rules.

Static Protected Member Functions

static const QIcon & iconGroup ()

Protected Attributes

QgsLayerTreeGroupmRootNode
 Pointer to the root node of the layer tree. Not owned by the model.
Flags mFlags
 Set of flags for the model.
QMap< QgsLayerTreeLayer
*, QList
< QgsLayerTreeModelLegendNode * > > 
mLegendNodes
 Active legend nodes for each layer node.
QMap< QgsLayerTreeLayer
*, QList
< QgsLayerTreeModelLegendNode * > > 
mOriginalLegendNodes
 Data structure for storage of legend nodes for each layer.
QPersistentModelIndex mCurrentIndex
 Current index - will be underlined.
int mAutoCollapseLegendNodesCount
 Minimal number of nodes when legend should be automatically collapsed. -1 = disabled.
QFont mFontLayer
QFont mFontGroup
double mLegendFilterByScale
 scale denominator for filtering of legend nodes (<= 0 means no filtering)
QScopedPointer< QgsMapSettingsmLegendFilterByMapSettings
QScopedPointer< QgsMapHitTestmLegendFilterByMapHitTest
double mLegendMapViewMupp
int mLegendMapViewDpi
double mLegendMapViewScale

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
Note
added in 2.4

Member Enumeration Documentation

Enumerator:
ShowLegend 

Add legend nodes for layer nodes.

ShowSymbology 

deprecated - use ShowLegend

ShowRasterPreviewIcon 

Will use real preview of raster layer as icon (may be slow)

AllowNodeReorder 

Allow reordering with drag'n'drop.

AllowNodeRename 

Allow renaming of groups and layers.

AllowNodeChangeVisibility 

Allow user to set node visibility with a check box.

AllowLegendChangeState 

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

AllowSymbologyChangeState 

deprecated - use AllowLegendChangeState

Constructor & Destructor Documentation

QgsLayerTreeModel::QgsLayerTreeModel ( QgsLayerTreeGroup rootNode,
QObject *  parent = 0 
)
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.

QgsLayerTreeModel::~QgsLayerTreeModel ( )

Member Function Documentation

void QgsLayerTreeModel::addLegendToLayer ( QgsLayerTreeLayer nodeL)
protected
int QgsLayerTreeModel::autoCollapseLegendNodes ( ) const
inline

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

Q_DECL_DEPRECATED int QgsLayerTreeModel::autoCollapseSymbologyNodes ( ) const
inline
int QgsLayerTreeModel::columnCount ( const QModelIndex &  parent = QModelIndex()) const
void QgsLayerTreeModel::connectToLayer ( QgsLayerTreeLayer nodeLayer)
protected
void QgsLayerTreeModel::connectToLayers ( QgsLayerTreeGroup parentGroup)
protected
void QgsLayerTreeModel::connectToRootNode ( )
protected
QModelIndex QgsLayerTreeModel::currentIndex ( ) const

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

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

Reimplemented in QgsLegendModelV2.

void QgsLayerTreeModel::disconnectFromLayer ( QgsLayerTreeLayer nodeLayer)
protected
void QgsLayerTreeModel::disconnectFromLayers ( QgsLayerTreeGroup parentGroup)
protected
void QgsLayerTreeModel::disconnectFromRootNode ( )
protected
bool QgsLayerTreeModel::dropMimeData ( const QMimeData *  data,
Qt::DropAction  action,
int  row,
int  column,
const QModelIndex &  parent 
)
QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::filterLegendNodes ( const QList< QgsLayerTreeModelLegendNode * > &  nodes)
protected

Filter nodes from QgsMapLayerLegend according to the current filtering rules.

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

Reimplemented in QgsLegendModelV2.

QgsLayerTreeModel::Flags QgsLayerTreeModel::flags ( ) const

Return OR-ed combination of model flags.

const QIcon & QgsLayerTreeModel::iconGroup ( )
staticprotected
QModelIndex QgsLayerTreeModel::index ( int  row,
int  column,
const QModelIndex &  parent = QModelIndex() 
) const
QgsLayerTreeModelLegendNode * QgsLayerTreeModel::index2legendNode ( const QModelIndex &  index)
static

Return legend node for given index.

Returns null for invalid index

Note
added in 2.6
QgsLayerTreeNode * QgsLayerTreeModel::index2node ( const QModelIndex &  index) const

Return 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)

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.

  • skipInternal If true, a node is included in the output list only if no parent node is in the list
bool QgsLayerTreeModel::isIndexSymbologyNode ( const QModelIndex &  index) const

Return true if index represents a legend node (instead of layer node)

Deprecated:
use index2legendNode()
void QgsLayerTreeModel::layerLegendChanged ( )
protectedslot
QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::layerLegendNodes ( QgsLayerTreeLayer nodeLayer)

Return list of legend nodes attached to a particular layer node.

Note
added in 2.6
void QgsLayerTreeModel::layerNeedsUpdate ( )
protectedslot
QgsLayerTreeLayer * QgsLayerTreeModel::layerNodeForSymbologyNode ( const QModelIndex &  index) const

Return layer node to which a legend node belongs to.

Returns null pointer if index is not a legend node.

Deprecated:
use index2legendNode()->parent()
QFont QgsLayerTreeModel::layerTreeNodeFont ( int  nodeType) const

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

const QgsMapSettings* QgsLayerTreeModel::legendFilterByMap ( ) const
inline
double QgsLayerTreeModel::legendFilterByScale ( ) const
inline
void QgsLayerTreeModel::legendMapViewData ( double *  mapUnitsPerPixel,
int *  dpi,
double *  scale 
)

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

Note
added in 2.6
QModelIndex QgsLayerTreeModel::legendNode2index ( QgsLayerTreeModelLegendNode legendNode)

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

Note
added in 2.6
void QgsLayerTreeModel::legendNodeDataChanged ( )
protectedslot
QMimeData * QgsLayerTreeModel::mimeData ( const QModelIndexList &  indexes) const
QStringList QgsLayerTreeModel::mimeTypes ( ) const
QModelIndex QgsLayerTreeModel::node2index ( QgsLayerTreeNode node) const

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

void QgsLayerTreeModel::nodeAddedChildren ( QgsLayerTreeNode node,
int  indexFrom,
int  indexTo 
)
protectedslot
void QgsLayerTreeModel::nodeCustomPropertyChanged ( QgsLayerTreeNode node,
const QString &  key 
)
protectedslot
void QgsLayerTreeModel::nodeLayerLoaded ( )
protectedslot
void QgsLayerTreeModel::nodeLayerWillBeUnloaded ( )
protectedslot
void QgsLayerTreeModel::nodeRemovedChildren ( )
protectedslot
void QgsLayerTreeModel::nodeVisibilityChanged ( QgsLayerTreeNode node)
protectedslot
void QgsLayerTreeModel::nodeWillAddChildren ( QgsLayerTreeNode node,
int  indexFrom,
int  indexTo 
)
protectedslot
void QgsLayerTreeModel::nodeWillRemoveChildren ( QgsLayerTreeNode node,
int  indexFrom,
int  indexTo 
)
protectedslot
QModelIndex QgsLayerTreeModel::parent ( const QModelIndex &  child) const
void QgsLayerTreeModel::recursivelyEmitDataChanged ( const QModelIndex &  index = QModelIndex())
protected

emit dataChanged() for layer tree node items

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.

Q_DECL_DEPRECATED void QgsLayerTreeModel::refreshLayerSymbology ( QgsLayerTreeLayer nodeLayer)
inline
void QgsLayerTreeModel::removeLegendFromLayer ( QgsLayerTreeLayer nodeLayer)
protected
bool QgsLayerTreeModel::removeRows ( int  row,
int  count,
const QModelIndex &  parent = QModelIndex() 
)
QgsLayerTreeGroup * QgsLayerTreeModel::rootGroup ( ) const

Return pointer to the root node of the layer tree. Always a non-null pointer.

int QgsLayerTreeModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const
void QgsLayerTreeModel::setAutoCollapseLegendNodes ( int  nodeCount)
inline

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

Q_DECL_DEPRECATED void QgsLayerTreeModel::setAutoCollapseSymbologyNodes ( int  nodeCount)
inline
void QgsLayerTreeModel::setCurrentIndex ( const QModelIndex &  currentIndex)

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

bool QgsLayerTreeModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
)
void QgsLayerTreeModel::setFlag ( QgsLayerTreeModel::Flag  f,
bool  on = true 
)

Enable or disable a model flag.

void QgsLayerTreeModel::setFlags ( Flags  f)

Set OR-ed combination of model flags.

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

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

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.

Note
added in 2.6
void QgsLayerTreeModel::setLegendFilterByScale ( double  scaleDenominator)

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

Setting value <= 0 will disable the functionality

Note
added in 2.6
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.

Note
added in 2.6
void QgsLayerTreeModel::setRootGroup ( QgsLayerTreeGroup newRootGroup)

Reset the model and use a new root group node.

Note
added in 2.6
Qt::DropActions QgsLayerTreeModel::supportedDropActions ( ) const
bool QgsLayerTreeModel::testFlag ( QgsLayerTreeModel::Flag  f) const

Check whether a flag is enabled.

Member Data Documentation

int QgsLayerTreeModel::mAutoCollapseLegendNodesCount
protected

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

QPersistentModelIndex QgsLayerTreeModel::mCurrentIndex
protected

Current index - will be underlined.

Flags QgsLayerTreeModel::mFlags
protected

Set of flags for the model.

QFont QgsLayerTreeModel::mFontGroup
protected
QFont QgsLayerTreeModel::mFontLayer
protected
QScopedPointer<QgsMapHitTest> QgsLayerTreeModel::mLegendFilterByMapHitTest
protected
QScopedPointer<QgsMapSettings> QgsLayerTreeModel::mLegendFilterByMapSettings
protected
double QgsLayerTreeModel::mLegendFilterByScale
protected

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

int QgsLayerTreeModel::mLegendMapViewDpi
protected
double QgsLayerTreeModel::mLegendMapViewMupp
protected
double QgsLayerTreeModel::mLegendMapViewScale
protected
QMap<QgsLayerTreeLayer*, QList<QgsLayerTreeModelLegendNode*> > QgsLayerTreeModel::mLegendNodes
protected

Active legend nodes for each layer node.

May have been filtered. Owner of legend nodes is still mOriginalLegendNodes !

QMap<QgsLayerTreeLayer*, QList<QgsLayerTreeModelLegendNode*> > QgsLayerTreeModel::mOriginalLegendNodes
protected

Data structure for storage of legend nodes for each layer.

These are nodes as received from QgsMapLayerLegend

QgsLayerTreeGroup* QgsLayerTreeModel::mRootNode
protected

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


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