Bonjour,
En faisant un pause dans mes projets universitaires, je suis rappelé d'un système vu en cours l'été dernier. Je me suis dit: «et si je le mettais en place avec Qt pour gérer les signaux entre mes objets?» Ai-je bu trop de café pour avoir une idée pareille? Je n'en sais rien, mais le fait est que ça me taraude et que ça peut s'avérer super pratique.
J'ai joint le schéma du système que je souhaite créer en pièce jointe et mon explication se basera dessus.
Dans ce système, j'ai mes n objets et mon signal handler de part et d'autre d'un bus de données (en bleu et rouge). Chacun de ces objets possède un couple (rectangle gris) composé d'un émetteur de signal (petit rectangle noir) et d'un slot (petit rectangle blanc) qui le relie au bus.
Les signaux envoyés par les objets à gauche du schéma (en bleu) sont reçus par le slot du signal handler. D'autre part, ce dernier renvoie à la réception d'un signal bleu un signal (en rouge) à destination de tous les objets connectés.
Tous les signaux possèdent les arguments suivants:
- QString sender
- QList<QString> receivers
- QString subject
- QList<QVariant> contents
Chaque objet recevant un signal rouge ne s'en occupera que s'il en est destinataire, mais sans en être l'expéditeur. Ce format nécessite le baptême de chaque objet présent dans le système en dehors du signal handler.
Mais tout ce discours n'est pas vain, car j'affronte un problème dès le départ. En effet, à cause du format des signaux je ne peux pas utiliser QSignalMapper pour mon gestionnaire. Comment faire pour connecter tous mes signaux bleus au seul slot de mon signal handler?
Merci d'avance pour votre aide.
PS: Je suis prolixe en ce moment! Serais-je malade? Ou ai-je vraiment bu trop de café?
EDIT: J'ai changé QString receiver et QString contents = "" en QList<QString> receivers et QList<QVariant> contents
Partager