Ich rufe ein emit signal1()
von einem nicht Qt-Thread. Mit Nicht-Qt-Thread meine ich nicht aus der GUI-Ereignisschleife und nicht aus irgendeiner QThread run() -Methode oder irgendeiner QThread-eigenen Ereignisschleife.emittieren Qt-Signal von nicht Qt Thread oder außerhalb Qt Main Event Loop mit um 4,5
Es ist einfach ein Pthread (pthread_create()), das eine Methode eines QObject aufruft, das Signale aussendet.
ex:
MyQbject: public QObject
{
...
void emitBunchOfSignals()
{
emit signal1();
emit signal2();
...
}
...
}
die „Run“ Methode meiner Pthread die einen Zeiger auf eine MyObject Instanz hat (Instanz, die innerhalb des Haupt Qt GUI Thread-Kontext erstellt war nicht die p-Strang) ruft die emitBunchOfSignals()
Methoden.
Vor Qt 4,5 war das böse. Behandelt Qt 4.5 das jetzt? Ruft es qApp->PostEvent()
oder etwas auf, so wird das Signal innerhalb der Qt GUI Thread (und damit auch der Steckplatz) emittiert?
dank
Wenn Sie connect aufrufen, können Sie den Typ explizit auf die Verbindung in der Warteschlange festlegen. –
In der Zeit, in der du diese Frage aufgeschrieben hast, hättest du den Code einfach öffnen und selbst suchen können. – shoosh
Es scheint nicht einfach zu sein, da es mit Qt 3.xx abgestürzt ist. Ich bin vertraut mit der connect-Option (direkte Verbindung queueedconnection etc), aber ich dachte, es funktioniert nur zwischen QTreads oder zwischen einem QThread und der Main-Event-Schleife. Warum es mit Qt 3.xx zumindest abstürzte, war nicht einfach zu verstehen, wenn man sich den Code anschaute. Bin ich verrückt ? –