QT signals und slots
-
nehmen wir an, ein Program in 3 layers aufgeteilt:
main->interface(c++->c)->Kernel, alle aktivitäten kommen von Kernel aus,der durch interface gekappselt ist. main kennt interface, interface kennt Kernel, aber nicht umgekehrt. Falls interface die interne Daten geändert von Kernel bekommt, informiert es main layer per signal. Signal-Slot Mechanismus läuft asynchon. Main bekommt das Signal, hört auf seine Beschäftigung, bearbeitet das Signal(in Slot) .
Durch Signal und Solt können Main und Interface miteinander kommunizieren.
Aber die Richtung ist umgedreht!! (interface kennt Funktionen von Main)
Es ist ein Nachteil von diesem Mechanismus?
-
Was soll uns dieser Beitrag denn jetzt sagen?
Wenn das Interface dem Hauptprogramm irgendeine Nachricht schicken soll, muß es ganz klar einen Ansprechpunkt dort bekommen. Als Alternative könntest du höchstens noch auf ein pull-Modell umsteigen: Das Hauptprogramm fragt in regelmäßigen Abständen ab, ob sich im Interface (und Kernel) etwas geändert hat.
-
Es ist ein Nachteil von diesem Mechanismus?
Nö, wieso?
Wo siehst du das Problem?
Rückwärts kommunzierst du über Signale, Vorwärts über Slots.
Du kannst aber die Richtung auch umdrehen.connect( this, SIGNAL(connect()),interface->kernel,SLOT(Connected())); //or connect( interface->kernel, SIGNAL(connect()),this,SLOT(Connected())); //or interface->kernel->Connected();
Wenn du mehrere Unterklasse hast, ist die Qptrlist nett.
Gruss,
Buggykite