QGIS API Documentation
2.6.0-Brighton
|
The QgsLayerTreeModel class is model implementation for Qt item views framework. More...
#include <qgslayertreemodel.h>
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. | |
QgsLayerTreeNode * | index2node (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. | |
QgsLayerTreeGroup * | rootGroup () 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 ¤tIndex) |
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 QgsMapSettings * | legendFilterByMap () 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 | |
QgsLayerTreeGroup * | mRootNode |
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< QgsMapSettings > | mLegendFilterByMapSettings |
QScopedPointer< QgsMapHitTest > | mLegendFilterByMapHitTest |
double | mLegendMapViewMupp |
int | mLegendMapViewDpi |
double | mLegendMapViewScale |
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.
|
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 | ( | ) |
|
protected |
|
inline |
Return at what number of legend nodes the layer node should be collapsed. -1 means no auto-collapse (default).
|
inline |
int QgsLayerTreeModel::columnCount | ( | const QModelIndex & | parent = QModelIndex() | ) | const |
|
protected |
|
protected |
|
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.
|
protected |
|
protected |
|
protected |
bool QgsLayerTreeModel::dropMimeData | ( | const QMimeData * | data, |
Qt::DropAction | action, | ||
int | row, | ||
int | column, | ||
const QModelIndex & | parent | ||
) |
|
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.
|
staticprotected |
QModelIndex QgsLayerTreeModel::index | ( | int | row, |
int | column, | ||
const QModelIndex & | parent = QModelIndex() |
||
) | const |
|
static |
Return legend node for given index.
Returns null for invalid index
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.
bool QgsLayerTreeModel::isIndexSymbologyNode | ( | const QModelIndex & | index | ) | const |
Return true if index represents a legend node (instead of layer node)
|
protectedslot |
QList< QgsLayerTreeModelLegendNode * > QgsLayerTreeModel::layerLegendNodes | ( | QgsLayerTreeLayer * | nodeLayer | ) |
Return list of legend nodes attached to a particular layer node.
|
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.
QFont QgsLayerTreeModel::layerTreeNodeFont | ( | int | nodeType | ) | const |
Get font for a particular type of layer tree node. nodeType should come from QgsLayerTreeNode::NodeType enumeration.
|
inline |
|
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.
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.
|
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.
|
protectedslot |
|
protectedslot |
|
protectedslot |
|
protectedslot |
|
protectedslot |
|
protectedslot |
|
protectedslot |
|
protectedslot |
QModelIndex QgsLayerTreeModel::parent | ( | const QModelIndex & | child | ) | const |
|
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.
|
inline |
|
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 |
|
inline |
Set at what number of legend nodes the layer node should be collapsed. Setting -1 disables the auto-collapse (default).
|
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.
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
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.
void QgsLayerTreeModel::setRootGroup | ( | QgsLayerTreeGroup * | newRootGroup | ) |
Reset the model and use a new root group node.
Qt::DropActions QgsLayerTreeModel::supportedDropActions | ( | ) | const |
bool QgsLayerTreeModel::testFlag | ( | QgsLayerTreeModel::Flag | f | ) | const |
Check whether a flag is enabled.
|
protected |
Minimal number of nodes when legend should be automatically collapsed. -1 = disabled.
|
protected |
Current index - will be underlined.
|
protected |
Set of flags for the model.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
scale denominator for filtering of legend nodes (<= 0 means no filtering)
|
protected |
|
protected |
|
protected |
|
protected |
Active legend nodes for each layer node.
May have been filtered. Owner of legend nodes is still mOriginalLegendNodes !
|
protected |
Data structure for storage of legend nodes for each layer.
These are nodes as received from QgsMapLayerLegend
|
protected |
Pointer to the root node of the layer tree. Not owned by the model.