Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GUI thread detecting in the Qt library

I need to know in the context of which thread my function is running, is it main GUI thread or some worker thread.

I can't use a simple solution to store QThread pointer in the main function and compare it to QThread::currentThread() because I'm writing a library and I do not have access to the main function. I can of course create InitMyLibary() function and require library user to call it in the context of the GUI thread but I'm really against this.

like image 701
Sergey Skoblikov Avatar asked Jun 10 '09 19:06

Sergey Skoblikov


1 Answers

If you have Qt in the lib you can ask for the thread of the application object. The application object is alway living in the main gui thread.

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

}
like image 72
TimW Avatar answered Oct 30 '22 22:10

TimW