Seite 1 von 1

[gelöst] connect Debuggen

Verfasst: 16. April 2009 13:09
von cooky1976
Hallo,

ich habe hier ein Programm mit diversen connects, alle machen Ihren Dienst, bis auf eines ... ich paste mal die Funktion, die es beinhaltet:

Code: Alles auswählen

void ReMoCoHLAThread::connectFederateSignals(ReMoCoFederate *federate)
{
    connect(federate, SIGNAL(parseAvailableScenarios(const QString &)), this, SLOT(parseAvailableScenarios(const QString &)), Qt::DirectConnection);

    connect(this, SIGNAL(scenarioChoosen(const QString &)), federate, SLOT( scenarioChoosen(const QString &)));

    connect(this, SIGNAL(testSignals()), federate, SLOT(testSlots()));
}
"testSignals" ist nur zum Test, ob das auch nicht funktioniert. Der erste connect funktioniert.
Meine Frage:
- gibt es eine maximale Anzahl an connects?
- ist this als sender nicht möglich? (muss das verwenden, da ich auf eine Variable zugreife und das geht leider nur über diesen Mechanismus)

Danke

Alexander

PS: ich habe mich schon durch die Doku gewühlt und hierzu nichts gefunden.

Verfasst: 16. April 2009 13:30
von cooky1976
Nachtrag:
Die connect-Funktion residiert in einem QThread und wird über die run-Methode aufgerufen. Das Objekt "federate" wiederum ist nur lokal in run bekannt und darf auch nicht auf den kompletten Thread erweitert werden. Aus diesem Grund auch der Aufruf über connect und dem "federate"-Objeakt aus der Run-Methode heraus.

Verfasst: 16. April 2009 14:56
von Christian81
connect() hat einen Rückgabewert - den schonnmal ausgewertet?
Außerdem würde ich mal QueuedConnection probieren.

Verfasst: 16. April 2009 16:23
von cooky1976
Ja, den Rückgabewert hatte ich schon drin, vergessen das anzufügen. Rückgabewret ist true, aber auch die QueuedConnection bringt mir nicht den Aufruf des Slots.

Gibt es eine Möglichkeit zu überprüfen, ob die EventQueue mein Signal enthält bzw. diese periodisch ausgeführt wird?

Anzumerken ist noch, dass ich beim empfangenden Slot einen BreakPoint und eine Ausgabe habe, aber nichts aufgerufen wird.

Nachtrag: die Signals sind nicht geblockt. Einzige Vermutung, die ich habe ist ... könnte es damit zusammenhängen, dass das Objekt federate nicht in der Klasse bekannt ist?! Es ist nur in der "run" und den Methoden, die run aufruft und federate mitgibt, bekannt.

Verfasst: 16. April 2009 16:58
von Christian81
Wenn connect true zurückliefert wird das Signal auch ausgeliefert. D.h. das Signal wird nicht emittiert.

Verfasst: 16. April 2009 18:06
von cooky1976
Qt::DirectConnection bei "scenarioChoosen" brachte den erhofften Erfolg.

Danke Christian