[gelöst] connect Debuggen

Alles rund um die Programmierung mit Qt
Antworten
cooky1976
Beiträge: 76
Registriert: 24. Januar 2008 00:19

[gelöst] connect Debuggen

Beitrag 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.
Zuletzt geändert von cooky1976 am 16. April 2009 18:05, insgesamt 1-mal geändert.
cooky1976
Beiträge: 76
Registriert: 24. Januar 2008 00:19

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

connect() hat einen Rückgabewert - den schonnmal ausgewertet?
Außerdem würde ich mal QueuedConnection probieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cooky1976
Beiträge: 76
Registriert: 24. Januar 2008 00:19

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn connect true zurückliefert wird das Signal auch ausgeliefert. D.h. das Signal wird nicht emittiert.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cooky1976
Beiträge: 76
Registriert: 24. Januar 2008 00:19

Beitrag von cooky1976 »

Qt::DirectConnection bei "scenarioChoosen" brachte den erhofften Erfolg.

Danke Christian
Antworten