[QGIS-Developer] Load layer with style in Processing plugin

Nyall Dawson nyall.dawson at gmail.com
Wed May 30 20:04:27 PDT 2018


On 30 May 2018 at 20:22, matteo <matteo.ghetta at gmail.com> wrote:
> Hi devs,
>
> is it possible to load a layer (vector or raster) created in a
> Processing script/algorithm from the script itself without using the
> specific algorithm "set style for raster layer"?
>
> I'm using context.addLayerToLoadOnCompletion() to load the layers and I
> have a separated function that creates the style (as qml file with the
> same name of the layer). But when the layers are loaded the styles
> aren't (even if correctly created in the folder and it works if manually
> loaded in QGIS).
>
> Thanks for any suggestion

In 3.2 it should be possible, using a subclass of
QgsProcessingLayerPostProcessorInterface and

    context.layerToLoadOnCompletionDetails( output_dest_id
).setPostProcessor( my_layer_post_processor() )

Your QgsProcessingLayerPostProcessorInterface subclass would set the
style for the layer in its postProcessLayer implementation.

This is the canonical, thread safe way to do this in processing... any
other approach (and there's other hacky ways to do this) will not be
thread safe and may crash! We probably should make this a bit easier
and have a direct `context.layerToLoadOnCompletionDetails(
output_dest_id ).setLayerStyle(..... )` call, but it's too late for
3.2....


Nyall


More information about the QGIS-Developer mailing list