wie ueber alle receivers eines signals iterieren?

Alles rund um die Programmierung mit Qt
Antworten
skydave
Beiträge: 3
Registriert: 18. Juni 2009 00:48

wie ueber alle receivers eines signals iterieren?

Beitrag von skydave »

Hi Leute,

ich hab mit der Suche im Forum leider kein Erfolg gehabt, daher nun ein thread zum Thema.

Problem:
Ich habe ein QObject mit einem signal und nun moechte ich ueber alle QObjects iterieren die mittels connect als receiver zu diesem signal zugeordnet wurden.

Details:
Ich weis wie ich ueber alle Signale iteriere aber nun komm ich nicht weiter. Ich hab die signal-id/signature und kann auch abfragen wie viele receivers connected sind (QObject::receivers) finde nun aber keine methode einzelne receivers abzufragen (wie QObject *getReceiver(signalid, receiverindex)).

Motivation:
Ich moechte QObjects serialisieren. notifyConnect/notifyDisconnect moechte ich nicht verwenden da die Information ja schon irgendwo im QObject gespeichert ist und es mir sinnlos/ineffektiv erscheint auch noch selbst signal-receiver connections zu tracken.

Vielen Dank fuer Hinweise und Hilfe im vorraus,
David
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Für ein so spezielles Thema würde ich mich mal durch Sourcen von Qt wühlen.
skydave
Beiträge: 3
Registriert: 18. Juni 2009 00:48

Beitrag von skydave »

Hi Upsala,

danke fuer deine Antwort.

Ich hatte im QObject quellcode nachgeschaut und es sieht so aus als waere die info tief im QObject vergraben. Zum Bsp. greift recievers() auf d_func() zu um die Anzahl zu ermitteln (wie genau weis ich nicht) und es scheint als wuerde d_func auf private/qt interne daten zugreifen von denen nicht gedacht ist, dass sie von ausserhalb verwendet werden.

Gruesse,
David
Antworten