2009-06-10 15 views
13

Necesito saber en qué contexto se está ejecutando mi hilo, es hilo principal de la GUI o hilo de trabajo.Detección de hilo GUI en la biblioteca Qt

No puedo usar una solución simple para almacenar QThread puntero en la función principal y compararlo con QThread :: currentThread() porque estoy escribiendo una biblioteca y no tengo acceso a la función principal. Por supuesto, puedo crear la función InitMyLibary() y requerir que el usuario de la biblioteca lo llame en el contexto del hilo de la interfaz gráfica de usuario pero estoy realmente en contra de esto.

Respuesta

23

Si tiene Qt en la lib, puede solicitar el hilo del objeto de la aplicación. El objeto de la aplicación siempre está viviendo en el hilo principal de GUI.

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

} 
+5

correctas: QCoreApplication :: instance() -> thread(). También verificaría por ejemplo() == 0. –

Cuestiones relacionadas