Bloquer temporairement les signaux entre les deux QObjects
Je voudrais générique et de bloquer temporairement les signaux entre les deux QObjects
sans modifier les autres signaux/slots de comportement, et sans connaître leurs contextes.
Quelque chose comme QObject::blockSignals(bool), mais seulement s'exerçant entre deux QObjects
.
Qui est, la mise en œuvre de la suite de SignalBlocker::blockSignals(bool)
fonction:
class SignalBlocker {
public:
SignalBlocker(QObject *sender, QObject *receiver) :
mSender(sender), mReceiver(receiver) {}
void blockSignals(bool block);
private:
QObject *mSender, *mReceiver;
}
Il serait possible par disconneting et re-connecter les objets, mais d'abord la liste des signaux/slots devrait être stockées.
L'Introspection méthodes ne semblent pas être assez puissant pour le faire (j'ai regardé QMetaObject
et QSignalSpy
sans succès).
OriginalL'auteur FabienRohrer | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
QT ont pas les capacités pour désactiver le signal-slot paire seulement. Essayez cette solution de contournement:
OriginalL'auteur Oleg
puisque vous voulez que l'expéditeur et le récepteur ne sera pas envoyer des signaux à l'intérieur de ce champ d'activité, je voudrais juste essayer d'utiliser
blockSignals(bool)
et maintenant seulement utiliser
c'est peut-être possible de créer une classe comme
SignalBlocker
et de donner les objets d'un modèle de pointeur de fonction de ce que vous souhaitez bloquer ... donc il serait le blocage de tout simplement le signal que vous voulezOriginalL'auteur Zaiborg
U peut utiliser
disconnect(sender, 0, receiver, 0);
pour déconnecter tous lessender
's signaux de tous lesreceiver
'fentes.Essayez d'utiliser quelque chose comme
void QObject::connectNotify ( const char * signal ) [virtual protected]
ouvoid QObject::disconnectNotify ( const char * signal ) [virtual protected]
pour obtenir une liste des connecté/déconnecté des signaux, mais je ne pense pas que vous êtes en train de faire des choses. Pourquoi avez-vous besoin?OriginalL'auteur SpongeBobFan