Cela dépend.
Il m'a mordu avant quand je voulais ajouter une logique particulière à chaque fois un objet relié aux signaux d'un autre objet. C'est le cas le plus probable pour vous mordre. En outre, il peut être difficile de garder une trace exactement quand d'autres objets se connectent à un objet donné. Je dirais cacher les connexions derrière une fonction pour être du bon côté.
Je l'habitude d'utiliser une macro pour faire la définition de la fonction de vanille.
#define SIGNAL(slot,name) connection name(function<slot> func) { return _##name##.connect(func);}
Et puis dans une définition de classe:
SIGNAL(void(),clicked)
Cela suppose que vous suivez la convention de nommer le signal '_clicked', mais vous pouvez remplacer une convention. Il garde généralement l'interface plus propre pour toutes vos classes. Lorsque vous voulez ajouter une logique de connexion spéciale, vous pouvez, sans changer tous les autres objets qui utilisent le signal.
EDIT
Un exemple est lorsque l'objet de signal a été effectivement déplacé à une mise en œuvre des délégués dans une autre classe, mais il a encore un sens pour les objets à se connecter via la classe d'origine. Cela a brisé tous les endroits qui essayaient de s'y connecter. S'ils utilisaient des accesseurs de fonction pour se connecter, cela aurait été aussi simple que de changer la fonction pour rechercher le signal dans le délégué. Mais comme c'était il a cassé tous les utilisateurs de la classe originale. Ou, quand je voulais enregistrer à chaque fois quelque chose connecté à un signal spécifique. C'était juste à des fins de débogage, mais cela peut être très utile si vous suspectez que quelque chose de bancal se passe comme des cycles dans vos connexions de signal.
merci; Pouvez-vous me parler d'un cas précis où vous en aviez besoin? –