Sto chiamando uno emit signal1()
da un thread non Qt. Per thread non Qt, intendo non dal loop eventi della GUI e non da alcun metodo QThread run() o da un qualsiasi loop di eventi di QThread.emette il segnale Qt dal thread non Qt o il loop di eventi principale di ouside Qt con 4.5
È semplicemente un pthread (pthread_create()) che chiama un metodo di QObject che emette segnali.
es:
MyQbject: public QObject
{
...
void emitBunchOfSignals()
{
emit signal1();
emit signal2();
...
}
...
}
il metodo "run" del mio pthread che ha un puntatore a un'istanza MyObject (istanza che è stata creata all'interno del contesto del thread GUI Qt principale non la pthread) chiama il emitBunchOfSignals()
metodi.
Prima di Qt 4.5 era brutto. Ora, Qt 4.5 gestisce questo? Chiama qApp->PostEvent()
o qualcosa così il segnale viene emesso all'interno del thread della GUI Qt (e quindi anche dello slot)?
grazie
Quando si chiama connect, è possibile impostare il tipo in modo esplicito sulla connessione in coda. –
Nel tempo che ti ci è voluto per scrivere questa domanda, avresti potuto semplicemente aprire il codice e cercare te stesso. – shoosh
Non sembra semplice in quanto si è verificato un arresto anomalo con Qt 3.xx. Ho familiarità con l'opzione di connessione (directconnection queuedconnection etc), ma ho pensato che funzionasse solo tra QTreads o tra un QThread e il loop degli eventi principale. Il motivo per cui ha avuto un crash con Qt 3.xx almeno non era semplice da capire guardando il codice. Sono pazzo? –