C++ Qt库中的GUI线程检测

C++ Qt库中的GUI线程检测,c++,multithreading,qt,C++,Multithreading,Qt,我需要知道我的函数运行在哪个线程的上下文中,是主GUI线程还是某个工作线程 我无法使用简单的解决方案将QThread指针存储在主函数中,并将其与QThread::currentThread()进行比较,因为我正在编写一个库,并且无法访问主函数。当然,我可以创建InitMyLibary()函数,并要求库用户在GUI线程的上下文中调用它,但我确实反对这种做法。如果库中有Qt,则可以请求应用程序对象的线程。应用程序对象始终位于主gui线程中 void fooWorker() { const b

我需要知道我的函数运行在哪个线程的上下文中,是主GUI线程还是某个工作线程


我无法使用简单的解决方案将QThread指针存储在主函数中,并将其与QThread::currentThread()进行比较,因为我正在编写一个库,并且无法访问主函数。当然,我可以创建InitMyLibary()函数,并要求库用户在GUI线程的上下文中调用它,但我确实反对这种做法。

如果库中有Qt,则可以请求应用程序对象的线程。应用程序对象始终位于主gui线程中

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

}

正确:QCoreApplication::instance()->thread()。我还要检查instance()==0。