Class: QgsMapRendererJob¶
- class qgis.core.QgsMapRendererJob¶
Bases:
PyQt5.QtCore.QObject
Abstract base class for map rendering implementations.
The API is designed in a way that rendering is done asynchronously, therefore the caller is not blocked while the rendering is in progress. Non-blocking operation is quite important because the rendering can take considerable amount of time.
Common use case:
Prepare
QgsMapSettings
with rendering configuration (extent, layer, map size, …)Create
QgsMapRendererJob
subclass withQgsMapSettings
instanceConnect to job’s
finished()
signalCall
start()
. Map rendering will start in background, the function immediately returnsAt some point, slot connected to
finished()
signal is called, map rendering is done
It is possible to cancel the rendering job while it is active by calling
cancel()
function.The following subclasses are available:
QgsMapRendererSequentialJob
- renders map in one background thread to an imageQgsMapRendererParallelJob
- renders map in multiple background threads to an imageQgsMapRendererCustomPainterJob
- renders map with given QPainter in one background thread
New in version 2.4:
Methods
Stop the rendering job - does not return until the job has terminated.
Triggers cancellation of the rendering job without blocking.
List of errors that happened during the rendering job - available when the rendering has been finished
Returns the feature filter provider used by the
QgsRenderContext
of each LayerRenderJob.Tell whether the rendering job is currently running in background.
Returns map settings with which this job was started.
Returns the total time it took to finish the job (in milliseconds).
Assign a cache to be used for reading and storing rendered images of individual layers.
Set the feature filter provider used by the
QgsRenderContext
of each LayerRenderJob.Start the rendering job and immediately return.
Gets pointer to internal labeling engine (in order to get access to the results).
Returns
True
if the render job was able to use a cached labeling solution.Block until the job has finished.
Signals
emitted when asynchronous rendering is finished (or canceled).
Emitted when the layers are rendered.
- class Error(lid: str, msg: str)¶
- class Error(QgsMapRendererJob.Error) None
Bases:
sip.wrapper
- layerID¶
- message¶
- cancel(self)¶
Stop the rendering job - does not return until the job has terminated. Does nothing if the rendering is not active.
- cancelWithoutBlocking(self)¶
Triggers cancellation of the rendering job without blocking. The render job will continue to operate until it is able to cancel, at which stage the
finished()
signal will be emitted. Does nothing if the rendering is not active.
- childEvent(self, QChildEvent)¶
- connectNotify(self, QMetaMethod)¶
- customEvent(self, QEvent)¶
- disconnectNotify(self, QMetaMethod)¶
- errors(self) List[QgsMapRendererJob.Error] ¶
List of errors that happened during the rendering job - available when the rendering has been finished
- Return type
List[QgsMapRendererJob.Error]
- featureFilterProvider(self) QgsFeatureFilterProvider ¶
Returns the feature filter provider used by the
QgsRenderContext
of each LayerRenderJob.New in version 3.0.
- Return type
- finished¶
emitted when asynchronous rendering is finished (or canceled). [signal]
- isActive(self) bool ¶
Tell whether the rendering job is currently running in background.
- Return type
bool
- isSignalConnected(self, QMetaMethod) bool ¶
- mapSettings(self) QgsMapSettings ¶
Returns map settings with which this job was started.
- Return type
- Returns
A
QgsMapSettings
instance with render settings
New in version 2.8.
- receivers(self, PYQT_SIGNAL) int ¶
- renderingLayersFinished¶
Emitted when the layers are rendered. Rendering labels is not yet done. If the fully rendered layer including labels is required use
finished()
instead.New in version 3.0: [signal]
- renderingTime(self) int ¶
Returns the total time it took to finish the job (in milliseconds).
See also
perLayerRenderingTime()
- Return type
int
- sender(self) QObject ¶
- senderSignalIndex(self) int ¶
- setCache(self, cache: QgsMapRendererCache)¶
Assign a cache to be used for reading and storing rendered images of individual layers. Does not take ownership of the object.
- Parameters
cache (QgsMapRendererCache) –
- setFeatureFilterProvider(self, f: QgsFeatureFilterProvider)¶
Set the feature filter provider used by the
QgsRenderContext
of each LayerRenderJob. Ownership is not transferred and the provider must not be deleted before the render job.New in version 3.0.
- Parameters
f (QgsFeatureFilterProvider) –
- start(self)¶
Start the rendering job and immediately return. Does nothing if the rendering is already in progress.
- takeLabelingResults(self) QgsLabelingResults ¶
Gets pointer to internal labeling engine (in order to get access to the results). This should not be used if cached labeling was redrawn - see
usedCachedLabels()
.See also
- Return type
- timerEvent(self, QTimerEvent)¶
- usedCachedLabels(self) bool ¶
Returns
True
if the render job was able to use a cached labeling solution. If so, any previously stored labeling results (seetakeLabelingResults()
) should be retained.See also
New in version 3.0.
- Return type
bool
- waitForFinished(self)¶
Block until the job has finished.