J'appelle un emit signal1()
à partir d'un thread non Qt. Par thread non Qt, je ne veux pas dire de la boucle d'événements de l'interface utilisateur graphique et non d'une méthode QThread() ou d'une boucle d'événement QThread.Emettre un signal Qt à partir d'une boucle d'événement principal Qt Thread ou Qt non Qt à 4,5
C'est simplement un pthread (pthread_create()) qui appelle une méthode d'un QObject qui émet des signaux.
ex:
MyQbject: public QObject
{
...
void emitBunchOfSignals()
{
emit signal1();
emit signal2();
...
}
...
}
le "run" méthode de mon pthread qui a un pointeur vers une instance MyObject (instance qui a été créé dans le cadre principal de fil GUI Qt PAS le pthread) appelle les méthodes emitBunchOfSignals()
.
Avant Qt 4,5 qui était méchant. Maintenant, Qt 4.5 gère-t-il cela? Appelle-t-il qApp->PostEvent()
ou quelque chose de sorte que le signal soit émis dans le Qt GUI Thread (et ainsi le slot)?
grâce
Lorsque vous appelez connect, vous pouvez définir explicitement le type de connexion en file d'attente. –
Pendant le temps qu'il vous a fallu pour écrire cette question, vous auriez pu ouvrir le code et chercher vous-même. – shoosh
Cela ne semble pas simple, car il avait l'habitude de planter avec Qt 3.xx. Je suis familier avec l'option connect (connexion directe queuedconnection etc) mais je pensais que cela fonctionnait seulement entre QTreads ou entre un QThread et la boucle d'événement principal. Pourquoi il avait l'habitude de planter avec Qt 3.xx au moins n'était pas simple à comprendre en regardant le code. Suis-je fou ? –