Slot reagiert nicht auf Signal
Slot reagiert nicht auf Signal
Hallo!
Folgender Code beschreibt meine Programmstruktur
class meineKlasse : QThread {
Q_OBCJECT
meineKlasse() {
connect(this,SIGNAL(meinSignal()),
this, SLOT(meinSlot());
emit meinSignal();
}
public slot:
meinSlot() { qDebug() << "Slot aufgerufen"; }
signal:
meinSignal();
void run() {
........
emit meinSignal();
........
}
};
Der Code compiliert und beim verbinden der Slots bekomme ich keine Fehler während der Laufzeit. Eventuelle Syntax Fehler in diesem Beispielcode also einfach übergehen.
Problem:
Wenn ich das SIGNAL im Konstruktor emitte wird der SLOT aufgerufen. Wenn ich das SIGNAL in run() emitte passiert jedoch nichts!!
Was ist falsch?
Folgender Code beschreibt meine Programmstruktur
class meineKlasse : QThread {
Q_OBCJECT
meineKlasse() {
connect(this,SIGNAL(meinSignal()),
this, SLOT(meinSlot());
emit meinSignal();
}
public slot:
meinSlot() { qDebug() << "Slot aufgerufen"; }
signal:
meinSignal();
void run() {
........
emit meinSignal();
........
}
};
Der Code compiliert und beim verbinden der Slots bekomme ich keine Fehler während der Laufzeit. Eventuelle Syntax Fehler in diesem Beispielcode also einfach übergehen.
Problem:
Wenn ich das SIGNAL im Konstruktor emitte wird der SLOT aufgerufen. Wenn ich das SIGNAL in run() emitte passiert jedoch nichts!!
Was ist falsch?
Re: Slot reagiert nicht auf Signal
ich glaube header und implementation muessen getrennt sein .
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Da run() in einem anderen Thread ist, müsste entweder das connect() auch in die run-Methode (so dass alles im Thread abläuft) oder man muss beim connect() angeben dass es eine queued connection werden soll - dann sollte es auch über threadgrenzen hinweg gehen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Also doch zu wenig code bzw. Doku nicht gelesen... http://doc.trolltech.com/4.3/qthread.html#exec
It is necessary to call this function to start event handling.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
so hier ist jetzt mal das kleine programm dass du wolltest! Es existieren 2 Threads die miteinander über signal und slot kommunizieren sollen. Wenn ich bei beiden Thread in der run Methode keine endlosschleife mache (forever {} auskommentiert) funktionieren bei dem Testprogramm die Signals und Slot. Sobald ich die schleifen allerdings benutzte gehts nicht mehr.
Was muss ich jetzt wo ändern damit es geht??
Was muss ich jetzt wo ändern damit es geht??
- Dateianhänge
-
- Archiv.rar
- (906 Bytes) 166-mal heruntergeladen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: