Qt库中GUI线程的检测

17

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

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

1个回答

30
如果你的库中有Qt,你可以获取应用程序对象的线程。应用程序对象始终存在于主GUI线程中。
void fooWorker()
{
    const bool isGuiThread = 
        QThread::currentThread() == QCoreApplication::instance()->thread();

}

6
正确的翻译如下:QCoreApplication::instance()->thread()。我还会检查 instance() 是否等于 0。 - Sergey Skoblikov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接