"Alle anderen Methoden der Klasse werden im Main-Thread aufgerufen..." kann man nicht falsch verstehen. Das ist so nicht richtig.RavenIV hat geschrieben:Sorry solarix,
aber Du hast vermutlich nicht verstanden, was lepsai sagen wollte.
Werden Methoden einer "Thread-Klasse" von ausserhalb (also nicht run()) aufgerufen, laufen sie nicht im Kontext des Thread ab, sondern im Kontext des aufrufenden Threads.
@lepsai: jetzt klingt es schon viel richtiger.. allerdings wuerde ich ergaenzen:
a) Direkter Aufruf von Slots ist ein gewöhnlicher Funktionsaufruf, erfolgt also in dem Kontext des Aufrufers
c) Die Slots die über QueuedConnection oder BlockedQueuedConnection getriggert werden, werden per Event-Mechanismus aufgelöst und werden letztendlich im QEventLoop des Empfaengers (und damit auch im Threadkontext des Empfaengers) abgearbeitet.
Dass das "im Normalfall der Hauptthread" ist, wuerde ich so nicht schreiben, denn im Normalfall schiebe ich die Threadinstanz (wie Chr.81 geschrieben hat) mit moveToThread() zum Thread... und damit in den Eventloop der run()-Methode des Threads.
[EDIT]
Der komplette Source zeigt es: Christian hat recht. Da gehoert einfach noch ein moveToThread(..) hin ( in den Konstruktor oder beim Instanzieren).