I have created a memory polygon vector layer from my plugin in QGIS and it looks fine:
my_layer = QgsVectorLayer('Polygon', 'My layer', 'memory') QgsMapLayerRegistry.instance().addMapLayer(my_layer, False) # I want to place the layer at a specified position in the layer tree. root_node = QgsProject.instance().layerTreeRoot() root_node.insertLayer(3, my_layer)
Then I applied some styling from the plugin and it works too. Finally I wanted to enable some labelling from within the plugin:
label = QgsPalLayerSettings() label.readFromLayer(my_layer) label.enabled = True label.fieldName = '$area' label.writeToLayer(my_layer)
The problem is that the labels are not showing. I need to manually change just one simple thing in the label settings for the specified layer afterwards and then they show with my customised settings.
I see that others are using the
setCustomProperty on the layer instead:
my_layer.setCustomProperty('labeling', 'pal') my_layer.setCustomProperty('labeling/enabled', 'true') my_layer.setCustomProperty('labeling/fieldName', '$area')
But that doesn't work either, I still need to manually change something to get them to show.
I have tried both
It doesn't seem to have any effect though.
It doesn't seem to have any effect either if I apply the labeling before or after I add the layer to the
Is this a known problem, or can you see what it is that I am missing here?