Signal et Slot de Qt Iris 1 http://qt.nokia.com/title-fr
Mécanisme de communication Depuis son origine, Qt propose ce mécanisme de communication entre les objets appelé : signaux et slots Ceci est possible grâce au préprocesseur (le moc) qui ajoute des mots-clés supplémentaires.
Règle de mise en place (1) Les classes qui contiennent les signaux et les slots doivent hériter de QObject.
Règle de mise en place (2) La déclaration des outils nécessaires à la mise en place de ce mécanisme, se fait par la macro Q_OBJECT. Dans le .h Un bloc de signaux est déclaré par le mot-clé signals. Chaque signal déclaré est un simple prototype, l'implémentation étant réalisée par le préprocesseur moc. Les slots sont aussi regroupés en bloc à l'aide du mot-clé slots, pouvant être public, protégé ou private. Un slot est une fonction qui sera appelée lorsqu'un signal qui lui est relié est déclanché.
Utilisation : émission du signal Pour émettre un signal l'instruction emit doit être utilisée. Exemple : void Detecteur::on_pushButton_PresenceIntrus_clicked() { emit IntrusDetecte (); }
Utilisation : connexion signal & slot Le lien entre signal et slot est réalisé par la fonction connect(). Celle-ci prend en paramètre : Un pointeur vers l'objet contenant le signal, La fonction de signal appelée par la macro SIGNAL(), Un pointeur vers l'objet contenant le slot Le slot appelé par la macro SLOT(). connect(leDetecteur,SIGNAL(IntrusDetecte()),this,SLOT(on_IntrusDetect())); Ici la connexion est réalisée dans la classe qui contient le slot.
Signal avec paramètre Un signal peut avoir plusieurs arguments auquel cas le slot associé ne peut pas avoir plus d'arguments que le signal. Il est aussi possible de connecter un signal sur un autre signal.
Autres possibilités La déconnexion d'un signal se fait avec la fonction disconnect(). Il est aussi possible d'auto-connecter des signaux à des slots d'un objets en utilisant comme nom de slot on_(nom de l'objet)_(signal émanent de l'objet). Cela est fait lors de l'appel à QMetaObject::connectSlotsByName(objet).
Les signaux et les slots sont utilisés pour communiquer entre objets Un slot connecté à un signal est une méthode de la classe réceptrice, qui doit avoir la même signature (autrement dit les mêmes paramètres que le signal auquel il est connecté). Le code de cette méthode représente les actions à réaliser à la réception du signal. Résumé