Emittiertes Signal kommt nicht an

Alles rund um die Programmierung mit Qt
Antworten
karocke
Beiträge: 1
Registriert: 6. Februar 2012 10:44

Emittiertes Signal kommt nicht an

Beitrag von karocke »

Hej,

ich habe gerade folgendes Problem:
Eine Kamera ruft eine Callback-Funktion auf, wenn sie ein neues Bild zur Verfügung stellen kann. Die Callback-Funktion weiß, zu welchem Objekt sie gehört. Jetzt will ich in der Callback-Funktion ein Signal aussenden, dass ein neues Bild zur Verfügung steht.
Mit diesem Signal habe ich einen Slot verknüpft, der dann das geholte Bild verarbeiten soll.
Das will ich machen, damit die Callback-Funktion nicht zu lange beschäftigt ist, da ich sonst eine hässliche Zeitverzögerung in meine Ausgabe bekomme.
Problem dabei: Der Slot wird leider nie aufgerufen. Wenn ich eine Ausgabe direkt vor die emit-Zeile packe, wird diese ausgegeben, die Callback-Funktion läuft also auf jeden Fall durch.

Ich verstehe leider nicht, warum das so ist. Kann mir jemand helfen?

Gruß
Karocke

Hier mal ein paar Codeschnipsel:

im Konstruktor:

Code: Alles auswählen

MyClass::MyClass() {
  [...]
  CONNECT(this, SIGNAL(frameReady()), this, SLOT(processFrame()); 
In der Callback-Funktion (statische Funktion):

Code: Alles auswählen

MyClass::onFrameReadyCallback(CAMERA_API_ARGUMENT_TYPE arg) {
  MyClass* This = reinterpret_cast<MyClass*>(arg.m_Parameter);
  [...]
  emit This->frameReady();
}
Slot:

Code: Alles auswählen

void MyClass::processFrame() {
  // Wird leider nicht aufgerufen
}
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: Emittiertes Signal kommt nicht an

Beitrag von archer »

Sind denn beide Klassen, Sender und Empfänger, von QObject abgeleitet?
Ist in beiden Header-Dateien das Q_OBJECT Macro gesetzt?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Emittiertes Signal kommt nicht an

Beitrag von Christian81 »

Des weiteren hat connect() auch einen Rückgabewert
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
uwe_road
Beiträge: 11
Registriert: 2. März 2011 12:20

Re: Emittiertes Signal kommt nicht an

Beitrag von uwe_road »

Hallo,
Da fehlt auf jeden fall eine ")" am Ende deines connects. Sollte es dann immer noch nicht klappen, dann schau doch mal nach ob das Signal überhaupt gesendet wird.
lg
Antworten