diff --git a/python/core/auto_generated/layertree/qgslayertreenode.sip.in b/python/core/auto_generated/layertree/qgslayertreenode.sip.in index 62053cf89e1..3c35af38786 100644 --- a/python/core/auto_generated/layertree/qgslayertreenode.sip.in +++ b/python/core/auto_generated/layertree/qgslayertreenode.sip.in @@ -169,6 +169,8 @@ Returns whether a node is checked (independently of its ancestors or children) %Docstring Check or uncheck a node (independently of its ancestors or children) +.. seealso:: :py:func:`QgsLayerTreeView.setLayerVisible` + .. versionadded:: 3.0 %End diff --git a/python/gui/auto_generated/layertree/qgslayertreeview.sip.in b/python/gui/auto_generated/layertree/qgslayertreeview.sip.in index 7d6688cf9da..61f79a8a076 100644 --- a/python/gui/auto_generated/layertree/qgslayertreeview.sip.in +++ b/python/gui/auto_generated/layertree/qgslayertreeview.sip.in @@ -79,7 +79,9 @@ Returns the currently selected layer, or ``None`` if no layers is selected. void setLayerVisible( QgsMapLayer *layer, bool visible ); %Docstring -Sets the visible state of the specified layer +Convenience methods which sets the visible state of the specified map ``layer``. + +.. seealso:: :py:func:`QgsLayerTreeNode.setItemVisibilityChecked` .. versionadded:: 3.10 %End diff --git a/src/core/layertree/qgslayertreenode.h b/src/core/layertree/qgslayertreenode.h index ce758078481..c0e0c5703fb 100644 --- a/src/core/layertree/qgslayertreenode.h +++ b/src/core/layertree/qgslayertreenode.h @@ -170,6 +170,9 @@ class CORE_EXPORT QgsLayerTreeNode : public QObject /** * Check or uncheck a node (independently of its ancestors or children) + * + * \see QgsLayerTreeView::setLayerVisible() + * * \since QGIS 3.0 */ void setItemVisibilityChecked( bool checked ); diff --git a/src/gui/layertree/qgslayertreeview.h b/src/gui/layertree/qgslayertreeview.h index c0d892e4258..96290a30ceb 100644 --- a/src/gui/layertree/qgslayertreeview.h +++ b/src/gui/layertree/qgslayertreeview.h @@ -88,8 +88,9 @@ class GUI_EXPORT QgsLayerTreeView : public QTreeView QgsMapLayer *currentLayer() const; /** - * Sets the visible state of the specified layer + * Convenience methods which sets the visible state of the specified map \a layer. * + * \see QgsLayerTreeNode::setItemVisibilityChecked() * \since QGIS 3.10 */ void setLayerVisible( QgsMapLayer *layer, bool visible ); diff --git a/tests/src/python/test_qgslayertreeview.py b/tests/src/python/test_qgslayertreeview.py index 3ada94785f5..207434efe48 100644 --- a/tests/src/python/test_qgslayertreeview.py +++ b/tests/src/python/test_qgslayertreeview.py @@ -211,6 +211,22 @@ class TestQgsLayerTreeView(unittest.TestCase): groupname + '-' + self.layer4.name(), ]) + def testSetLayerVisible(self): + view = QgsLayerTreeView() + view.setModel(self.model) + self.project.layerTreeRoot().findLayer(self.layer).setItemVisibilityChecked(True) + self.project.layerTreeRoot().findLayer(self.layer2).setItemVisibilityChecked(True) + self.assertTrue(self.project.layerTreeRoot().findLayer(self.layer).itemVisibilityChecked()) + self.assertTrue(self.project.layerTreeRoot().findLayer(self.layer2).itemVisibilityChecked()) + + view.setLayerVisible(None, True) + view.setLayerVisible(self.layer, True) + self.assertTrue(self.project.layerTreeRoot().findLayer(self.layer).itemVisibilityChecked()) + view.setLayerVisible(self.layer2, False) + self.assertFalse(self.project.layerTreeRoot().findLayer(self.layer2).itemVisibilityChecked()) + view.setLayerVisible(self.layer2, True) + self.assertTrue(self.project.layerTreeRoot().findLayer(self.layer2).itemVisibilityChecked()) + if __name__ == '__main__': unittest.main()