[gelöst] QT4.x: Reihenfolge der SLOT Abarbeitung
[gelöst] QT4.x: Reihenfolge der SLOT Abarbeitung
Hi,
ich habe eine klasse, die ein signal emittet und mehrer klassen die connected sind.
ich muss die aufrufreihenfolge der klassen sicherstellen, die connected sind.
gibt es da einen einfachen weg?
gruss,
nando
ich habe eine klasse, die ein signal emittet und mehrer klassen die connected sind.
ich muss die aufrufreihenfolge der klassen sicherstellen, die connected sind.
gibt es da einen einfachen weg?
gruss,
nando
Zuletzt geändert von nando am 3. Juli 2007 14:57, insgesamt 1-mal geändert.
Warum ist die Aufrufreihenfolge wichtig? Wenn eine Reihenfolge eingehalten werden soll, dann solltest Du das nicht von einem Signal abhängig machen, sondern es staffeln. Signal ruft Klasse 1, über ein weiteres Signal ruft die Klasse 2 auf, usw.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Hi,
als das problem ist folgendes:
momentan nutzen wir kein QT.
Wir haben eine eigene main-loop die eine konfigurierbare anzahl von bausteinen in einem container haelt. jede dieser bausteine hat eine art run-methode. aus der main loop werden immer nacheinander die run-methoden der bausteine aufgerufen. diese run-methoden sind aber nicht unabheangig, sonder greifen unter anderem auf daten zu, die ein baustein zuvor bearbeitet hat... daher ist die reihenfolge wichtig.
z.b wird baustein 1 aufgerufen, der eine meldung parst.... baustein 2 arbeitet dann mit der geparsten meldeungen und manipuliert diese... baustein 3 erstellt dann eine neue meldung und baustein 4 versendet diese...
also jetzt mal stark vereinfacht.... die bausteine wissen voneinander nichts.
ziel ist es nun unsere non-qt loop durch die von qt zu ersetzten um spaeter nach und nach diverse klassen auf qt umzustellen.
also wuerde ich gerne die run methoden der bausteine in slots umwandeln und aus der mailnloop immer die slots aufrufen..aber eben in einer angegebenen reihenfolge...
gruss,
nando
als das problem ist folgendes:
momentan nutzen wir kein QT.
Wir haben eine eigene main-loop die eine konfigurierbare anzahl von bausteinen in einem container haelt. jede dieser bausteine hat eine art run-methode. aus der main loop werden immer nacheinander die run-methoden der bausteine aufgerufen. diese run-methoden sind aber nicht unabheangig, sonder greifen unter anderem auf daten zu, die ein baustein zuvor bearbeitet hat... daher ist die reihenfolge wichtig.
z.b wird baustein 1 aufgerufen, der eine meldung parst.... baustein 2 arbeitet dann mit der geparsten meldeungen und manipuliert diese... baustein 3 erstellt dann eine neue meldung und baustein 4 versendet diese...
also jetzt mal stark vereinfacht.... die bausteine wissen voneinander nichts.
ziel ist es nun unsere non-qt loop durch die von qt zu ersetzten um spaeter nach und nach diverse klassen auf qt umzustellen.
also wuerde ich gerne die run methoden der bausteine in slots umwandeln und aus der mailnloop immer die slots aufrufen..aber eben in einer angegebenen reihenfolge...
gruss,
nando
Aus der QT-Doku:
Andere Hinweise konnte ich bis jetzt leider nicht finden....
Gruss,
Nando
Code: Alles auswählen
If several slots are connected to one signal, the slots will be executed one after the other, in an arbitrary order, when the signal is emitted.
Gruss,
Nando
Das widerspricht sich irgendwie, oder? Einer nach dem anderen in beliebiger Reihenfolge.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
-
Ginsengelf
- Beiträge: 79
- Registriert: 2. Mai 2007 10:21
Hi.. hier mal die Mail von den Trolls....:
> Hi,
>
> i have a question. if have a class which emits a signal which is
> connected to many classes. is there are way to set ther order in which
> the slots of the connected classes are called?
>
> the docu writes "... in arbitrary order"....
> maybe you know a solution to set the order ??
Hello Nando,
The slots are called in the inverse order in which they have been
connected, which in a complex program is close to arbitrary.
If you rely on the order of the slots executed, then maybe you shouldn't
use slots. Connect a single slot, and call the other functions in the
order in which they have to be called.
Regards,
Volker
--
Volker Hilsheimer, Support Manager
Trolltech ASA, Oslo - http://www.trolltech.com
======================================================================
Qtopia Greenphone Developer Challenge,
Show off your talent, your creativity, your Linux technology savvy.
Register now: http://www.trolltech.com/developer/tt/gpdevchallenge
======================================================================