2009-06-10 1 views
13

Ho bisogno di sapere nel contesto di quale thread è in esecuzione la mia funzione, è il thread della GUI principale o qualche thread di lavoro.Rilevamento del thread della GUI nella libreria Qt

Non riesco a utilizzare una soluzione semplice per memorizzare il puntatore QThread nella funzione principale e confrontarlo con QThread :: currentThread() perché sto scrivendo una libreria e non ho accesso alla funzione principale. Naturalmente posso creare la funzione InitMyLibary() e richiedere all'utente della libreria di chiamarlo nel contesto del thread della GUI, ma io sono davvero contro questo.

risposta

23

Se si dispone di Qt nella libreria, è possibile chiedere il thread dell'oggetto dell'applicazione. L'oggetto dell'applicazione è sempre presente nel thread principale del GUI.

void fooWorker() 
{ 
    const bool isGuiThread = 
     QThread::currentThread() == QCoreApplication::instance()->thread(); 

} 
+5

corretto: QCoreApplication :: instance() -> thread(). Vorrei anche verificare istanza() == 0. –