Les signaux et les slots#
Définition#
Nous avons pu voir dans la documentation des librairies Qt et QGIS, il y a une section Signals.
Chaque objet émet très souvent un signal dès qu'une action est faite sur l'objet. Cela sert à déclencher du code Python lorsqu'un signal précis est émis.
Par exemple sur la documentation de QgsMapLayer, on peut chercher
le tableau signals
.
Info
Comme on peut le voir dans la documentation CPP,
c'est désormais dans la classe QgsMapLayer
et non QgsVectorLayer
depuis QGIS 3.22. 🧐
La plupart des signaux sont aux passés, par exemple crsChanged
, nameChanged
. Cependant, certaines sont dans un
"futur" proche comme willBeDeleted
.
Syntaxe#
On dit que l'on souhaite connecter un signal à une fonction/slot :
1 |
|
Danger
Il ne faut pas écrire nom_de_la_fonction()
car on ne souhaite pas appeler la fonction, juste connecter.
Cela sera Python, plus tard, quand le signal sera émis, que la fonction sera réellement appelée.
Exemple#
Par exemple, dans la classe QgsMapLayer
, cherchons un signal qui est émis après (before) que la session d'édition
commence. Il s'agit de editingStarted
.
Affichons un message à l'utilisateur lors du début et de la fin d'une session d'édition.
Tip
On profite de cet exemple pour voir comment évaluer une expression QGIS à l'aide des différents contextes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|