Signals/Slots zwischen Threads und mit Basisklasse

Alles rund um die Programmierung mit Qt
Antworten
hafwil
Beiträge: 20
Registriert: 22. Mai 2006 16:18

Signals/Slots zwischen Threads und mit Basisklasse

Beitrag von hafwil »

Hallo!

Ich habe eine Frage wie man hier grundlegend vorgehen sollte:

Es gibt verschiedene Klassen (Class1, Class2,...), welche alle in einem eigenen Thread laufen und Daten sammeln, und alle haben ein Signal, z.B. DataChanged(...)
Eine andere Klasse registriert sich auf alle diese Signale und handelt diese in einem Slot, z.B. On_DataChanged(...)
Als Parameter möchte ich jetzt direkt die Daten mit übergeben, wobei es für jede Klasse (Class1, Class2,...) eine eigene Datenklasse gibt (Class1Data, Class2Data,...).

Wie sollte ich hier vorgehen? Im Signal einen Pointer auf die Basisklasse der Daten übergeben oder die Datenklassen als Metatypen registrieren und QVariant als gemeinsamen Nenner verwenden? Das Problem wenn ich nicht mit Pointer arbeite, dann werden mir immer nur Kopien von der Basiklasse erzeugt, die Lösung mit den Pointern scheint mir unsauber, da ich ja nie weiss wann die Daten wieder gelöscht werden können...

Vielleicht kann mir jemand ein bisschen weiterhelfen?
DK
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ein QEvent, weiß man es zerstört wird und kann somit einen mitgegeben Pointer selbst löschen.
Antworten