Aufruf von QThread.exec() zwingend erforderlich?

Alles rund um die Programmierung mit Qt
Antworten
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Aufruf von QThread.exec() zwingend erforderlich?

Beitrag von Deever »

Hey Amigos, wie geht's?

Ich brauche einen QThread, der in einem try-Block Aktionen ausführt und in der catch-Clause ein selbstdefiniertes Signal emittet, das der Thread schiefgelaufen ist, also:

Code: Alles auswählen

void MyThread::run()
{
	try {
		do_something();
		do_something_other();
	} catch (MyException &e) {
		emit threadFailed(e->num);
	}
	// exec() hier noetig?
}
Die Funktionen in der try-Clause enthalten keinerlei Qt-Code, ist der Aufruf von exec trotzdem nötig?

Vielen Dank für eure Antworten!
Gruß,
/dev
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das hatten wir schonmal irgendwo.
http://doc.trolltech.com/4.3/qt.html#Co ... nType-enum

Es ist eine queued Connection, also die event-loop des Threads nötig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Beitrag von Deever »

Vielen Dank für deine rasche Antwort!
Christian81 hat geschrieben:Es ist eine queued Connection, also die event-loop des Threads nötig.
Das heißt also, ich muß exec aufrufen? Ich will nur Signale von diesem Thread an Slots in anderen Threads binden, in der Doku zu QThread steht aber nur
Qt Dokumentation zu QThread hat geschrieben:"Having an event loop in a thread makes it possible to connect signals from other threads to slots in this threads"
, was genau der umgekehrten Richtung entspricht. Und in meinen Thread benutze ich wie gesagt keine Qt Objekte.

Gruß,
/dev
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Probieren kannst du es, aber ich beziehe mich eben auf
Qt::QueuedConnection 2 When emitted, the signal is queued until the event loop is able to deliver it to the slot.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Zandru
Beiträge: 84
Registriert: 29. Mai 2007 15:35

Beitrag von Zandru »

Nur der Empfänger des Signals braucht eine Eventloop, das emit geht auch ohne.

Gruß,
Zandru
Antworten