Vorübergehend blockieren Signale zwischen zwei QObjects

Ich würde gerne allgemein und vorübergehend blockiert die Signale zwischen zwei QObjects ohne änderung der anderen Signale/slots Verhalten, und ohne zu wissen, Ihre Zusammenhänge.

Etwas wie QObject::blockSignals(bool), sondern nur handeln zwischen zwei QObjects.

Ist, die Umsetzung der folgenden SignalBlocker::blockSignals(bool) Funktion:

class SignalBlocker {

public:
  SignalBlocker(QObject *sender, QObject *receiver) :
    mSender(sender), mReceiver(receiver) {}
  void blockSignals(bool block);

private:
  QObject *mSender, *mReceiver;
}

Wäre es möglich, durch disconneting und neu verbinden Sie die Objekte, aber zuerst die Liste der Signale/slots gespeichert werden müssten.
Introspektion-Methoden scheint das nicht zu sein, mächtig genug, um dies zu erreichen (ich sah QMetaObject und QSignalSpy ohne Erfolg).

InformationsquelleAutor FabienRohrer | 2013-03-26

Schreibe einen Kommentar