GUI thread detecting in the Qt library

2020-07-02 12:09发布

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.

1条回答
霸刀☆藐视天下
2楼-- · 2020-07-02 12:41

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();

}
查看更多
登录 后发表回答