J'ai un QObject A, celui-ci est connecté à un autre QObject B. Maintenant, je veux que A se connecte à C, un troisième QObject et se déconnecte complètement de B.Est-il possible de déconnecter toutes les connexions d'un QObject sans le supprimer
Facile peasy! Le problème est que j'ai beaucoup de A avec leur propre ensemble de signaux et de slots (les B/C sont plus génériques). Jusqu'à présent, j'ai créé manuellement une méthode de connexion et de déconnexion pour chaque type de classe. Les méthodes sont essentiellement des copies les unes des autres échangeant l'appel connect
pour disconnect
, en allant contre le don't repeat yourself). Donc, ma question est la suivante: la fonction suivante est-elle possible?
void deleteAllConnections(QObject* someObject) {
// TODO disconnect all connections owned by someObject
// For bonus points: Is there a way of accessing the QMetaObject connected to?
}
Je l'ai poussé autour du QMetaObject, QObject et la documentation Signals and Slots sans chance (bien que ce soit souvent pas une garantie ...).
'QObject :: disconnect();' http://doc.qt.io/qt-5/qobject.html#disconnect-5 – drescherjm
@drescherjm que états de la documentation 'Déconnecte tous les signaux de cet objet de la méthode du récepteur. 'Je lis cela car il déconnecte tous les signaux de ** cet ** objet des fentes ** de l'autre ** objet, mais je ne suis toujours pas sûr si c'est aussi déconnecte les signaux d'autres ** objets ** des emplacements de ** cet ** objet. – Troyseph