Qt库中的GUI线程检测

Ser*_*kov 15 c++ qt multithreading

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

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

Tim*_*imW 28

如果你在lib中有Qt,你可以请求应用程序对象的线程.应用程序对象总是生活在主要的gui线程中.

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

}
Run Code Online (Sandbox Code Playgroud)

  • correct:QCoreApplication :: instance() - > thread().我也会检查实例()== 0. (6认同)