8

enter image description here

Use this when layers are added, deleted, or their order is changed. Can you get a signal when a layer name is changed?

QgsProject.instance().legendLayersAdded.connect(self.polygonList) QgsProject.instance().layerRemoved.connect(self.polygonList) QgsProject.instance().layerTreeRoot().layerOrderChanged.connect(self.polygonList) 
1
  • @Taras nameChanged of QgsMapLayer is related to specific layer, not to layer tree. I guess OP asks how to get a signal when any layer name has changed. Commented Aug 20, 2023 at 21:00

1 Answer 1

10

Use the nameChanged signal of QgsLayerTreeNode class.

from qgis.core import QgsProject def name_changed(node, name): print(f"New Name: {name}") QgsProject.instance().layerTreeRoot().nameChanged.connect(name_changed) 

It also works on groups. Therefore, you may need to check if it is a layer.

from qgis.core import QgsProject, QgsLayerTreeLayer def name_changed(node, name): if isinstance(node, QgsLayerTreeLayer): # <-- print(f"New Name: {name}") QgsProject.instance().layerTreeRoot().nameChanged.connect(name_changed) 

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.