Hallo zusammen,
Wenn ich in einer QThread subklasse in der run() Methode wird exec() aufrufe friert der Thread an dieser Stelle ein, d.h. nichts passiert mehr. Darum habe ich das exec() bislang immer weggelassen, die Signals-Slots Verbindungen klappen auch so. Meine Frage ist: ich dachte man bräuchte das exec() für Signal-Slots Verbindungen zwischen Threads? Habe ich da was falsch verstanden? Wie wird exec() - "korrekt" eingesetzt (also ohne, das der Thread an der Stelle des Aufrufs pausiert).
Vielen Dank und viele Grüße,
Gwar
QThread & exec()
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
GwarDrazul
- Beiträge: 23
- Registriert: 5. Juni 2006 18:56
Hallo,
exec() ist eine "protected" Methode von QThread.
In der Docu steht weiterhin:
Grüße,
Gwar
exec() ist eine "protected" Methode von QThread.
In der Docu steht weiterhin:
Ich bin mir sicher, dass ich hier etwas falsch verstanden habe. Meine Signal / Slots Verbindungen scheinen auch ohne exec() zu klappen. Wofür braucht man es dann?Each QThread can have its own event loop. You can start the event loop by calling exec(); you can stop it by calling exit() or quit(). Having an event loop in a thread makes it possible to connect signals from other threads to slots in this threads, using a mechanism called queued connections.
Grüße,
Gwar
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Oh, habe aus Versehen in 3.3 geschaut - da gibts das noch nicht.
exec() reagiert doch korrekt - es geht in die EventLoop bis exit() aufgerufen wird (demnach nur von aussen möglich).
"to connect signals from other threads to slots in this threads" - also funktioniert es von dem Thread zum Hauptthread, aber andersrum nur wenn man exec() benutzt.
exec() reagiert doch korrekt - es geht in die EventLoop bis exit() aufgerufen wird (demnach nur von aussen möglich).
"to connect signals from other threads to slots in this threads" - also funktioniert es von dem Thread zum Hauptthread, aber andersrum nur wenn man exec() benutzt.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
GwarDrazul
- Beiträge: 23
- Registriert: 5. Juni 2006 18:56