diff --git a/python/PyQt6/core/auto_generated/layertree/qgslayertreemodel.sip.in b/python/PyQt6/core/auto_generated/layertree/qgslayertreemodel.sip.in index c6646508147d..c908db893138 100644 --- a/python/PyQt6/core/auto_generated/layertree/qgslayertreemodel.sip.in +++ b/python/PyQt6/core/auto_generated/layertree/qgslayertreemodel.sip.in @@ -410,7 +410,7 @@ Updates model when node's name has changed void layerFlagsChanged(); %Docstring -Emitted when layer flags have changed. +Triggered when layer flags have changed. .. versionadded:: 3.18 %End diff --git a/python/core/auto_generated/layertree/qgslayertreemodel.sip.in b/python/core/auto_generated/layertree/qgslayertreemodel.sip.in index d519b813a42f..8d4a3c3f0ea8 100644 --- a/python/core/auto_generated/layertree/qgslayertreemodel.sip.in +++ b/python/core/auto_generated/layertree/qgslayertreemodel.sip.in @@ -410,7 +410,7 @@ Updates model when node's name has changed void layerFlagsChanged(); %Docstring -Emitted when layer flags have changed. +Triggered when layer flags have changed. .. versionadded:: 3.18 %End diff --git a/src/core/layertree/qgslayertreemodel.cpp b/src/core/layertree/qgslayertreemodel.cpp index ce38e3ae6a76..139e31365c00 100644 --- a/src/core/layertree/qgslayertreemodel.cpp +++ b/src/core/layertree/qgslayertreemodel.cpp @@ -22,6 +22,7 @@ #include "qgsapplication.h" #include "qgslayertree.h" #include "qgslayertreemodellegendnode.h" +#include "qgsmaplayerelevationproperties.h" #include "qgsproject.h" #include "qgsmaphittest.h" #include "qgsmaplayer.h" @@ -992,6 +993,11 @@ void QgsLayerTreeModel::connectToLayer( QgsLayerTreeLayer *nodeLayer ) connect( layer, &QgsMapLayer::legendChanged, this, &QgsLayerTreeModel::layerLegendChanged, Qt::UniqueConnection ); connect( layer, &QgsMapLayer::flagsChanged, this, &QgsLayerTreeModel::layerFlagsChanged, Qt::UniqueConnection ); + if ( QgsMapLayerElevationProperties *elevationProperties = layer->elevationProperties() ) + { + connect( elevationProperties, &QgsMapLayerElevationProperties::profileGenerationPropertyChanged, this, &QgsLayerTreeModel::layerProfileGenerationPropertyChanged, Qt::UniqueConnection ); + } + // using unique connection because there may be temporarily more nodes for a layer than just one // which would create multiple connections, however disconnect() would disconnect all multiple connections // even if we wanted to disconnect just one connection in each call. @@ -1781,5 +1787,25 @@ void QgsLayerTreeModel::invalidateLegendMapBasedData() mInvalidatedNodes.clear(); } +void QgsLayerTreeModel::layerProfileGenerationPropertyChanged() +{ + if ( !mRootNode ) + return; + + QgsMapLayerElevationProperties *elevationProperties = qobject_cast( sender() ); + if ( !elevationProperties ) + return; + + if ( QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( elevationProperties->parent() ) ) + { + QgsLayerTreeLayer *nodeLayer = mRootNode->findLayer( layer->id() ); + if ( !nodeLayer ) + return; + + QModelIndex index = node2index( nodeLayer ); + emit dataChanged( index, index ); + } +} + // Legend nodes routines - end /////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/layertree/qgslayertreemodel.h b/src/core/layertree/qgslayertreemodel.h index ec7a33ff0406..54f0fbc242b2 100644 --- a/src/core/layertree/qgslayertreemodel.h +++ b/src/core/layertree/qgslayertreemodel.h @@ -383,7 +383,7 @@ class CORE_EXPORT QgsLayerTreeModel : public QAbstractItemModel void layerLegendChanged(); /** - * Emitted when layer flags have changed. + * Triggered when layer flags have changed. * \since QGIS 3.18 */ void layerFlagsChanged(); @@ -394,6 +394,14 @@ class CORE_EXPORT QgsLayerTreeModel : public QAbstractItemModel void invalidateLegendMapBasedData(); + private slots: + + /** + * Triggered when layer elevation properties have changed. + * \since QGIS 3.42 + */ + void layerProfileGenerationPropertyChanged(); + protected: void removeLegendFromLayer( QgsLayerTreeLayer *nodeLayer ); void addLegendToLayer( QgsLayerTreeLayer *nodeL );