Signals an Slots über mehrere klassen hinweg...

Alles rund um die Programmierung mit Qt
Antworten
bw1faeh0
Beiträge: 94
Registriert: 10. Oktober 2007 14:48
Wohnort: Braunschweig

Signals an Slots über mehrere klassen hinweg...

Beitrag von bw1faeh0 »

Hallo Leute,

gibt es für folgendes Szenarion eine Signal-Slot-Lösung?

Code: Alles auswählen

Main
   +----fmbMonitor
    |    +--fmbSniffer
    |        +--pollThread
    |        +--sendThread            SIGNAL: sendData(QString)
   +----Workspace
          +--MenuBar
          +--StatusBar
          +--WorkspaceView[0]     SLOT:     getData(Qstring)
          +--WorkspaceView[1]     SLOT:     getData(Qstring)
          +--WorkspaceView[2]     SLOT:     getData(Qstring)
          +--WorkspaceView[3]     SLOT:     getData(Qstring)
          +--WorkspaceView[4]     SLOT:     getData(Qstring)
          +--WorkspaceView[5]     SLOT:     getData(Qstring)
          +--WorkspaceView[6]     SLOT:     getData(Qstring)
          +--WorkspaceView[7]     SLOT:     getData(Qstring)
Also im Prinzip soll der sendThread die Daten an die verschiedenen WorkspaceViews schicken. Dabei ist zu beachten, dass WorkspaceView nicht von Workspace erbt, auch wenn dies anhand der Namen nahe liegen könnte. Das da oben sind alles eizelne Objekte.

Wie kann ich es also anstellen, dass das Signal an den Slots ankommt?

Ich habe überlegt, ob ich von fmbMonitor über Workspace zu WorkspaceView einen Zeiger auf fmbMonitor 'mitschleife' damit ich von WorkspaceView auf die Objekte von fmbMonitor und somit im Endeffekt auf sendThread Signal zugreifen kann.
Was haltet ihr davon? Gibt es einen besseren Weg?

Grüße

Chrisitan
Zuletzt geändert von bw1faeh0 am 25. Oktober 2007 15:07, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Signals an Slots über mehrere klassen hinweg...

Beitrag von Christian81 »

bw1faeh0 hat geschrieben: Wie kann ich es also anstellen, dass das Signal an den SLots ankommt?
Ich würde es mal mit QObject::connect() probieren :D

Wo genau liegt das Problem? An der Übergabe der ptr zu den Klassen?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bw1faeh0
Beiträge: 94
Registriert: 10. Oktober 2007 14:48
Wohnort: Braunschweig

Beitrag von bw1faeh0 »

habe das post bearbeitet, um meine idee rüberzubringen, bitte nochmal lesen ;)
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Ich kapier nicht ganz warum du von den Workspaces auf dein sendThread zugreifen willst. sendThread ist doch nach Deiner Definition das Signal, also müsste ja eher sendThread auf die Workspaces zugreifen. Aber wie auch immer, Christian hat vollkommen recht, es genügt ein connect().
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,

notfalls kann man auch eine Art "Signal-Switch" an einer günstig gelegenen Stelle einrichten.

Code: Alles auswählen

SIGNAL: sendData(QString message, int destination) 
Der "Signal-Switch"-Slot wertet "destination" aus und verteilt an die Views.

Ciao,
Sephral
Antworten