我需要知道我的函数运行在哪个线程的上下文中,是主GUI线程还是某个工作线程。
我无法使用简单的解决方案将QThread指针存储在main函数中并将其与QThread :: currentThread()进行比较,因为我正在编写库而我无法访问main函数。我当然可以创建InitMyLibary()函数并要求库用户在GUI线程的上下文中调用它,但我真的对此。
答案 0 :(得分:26)
如果你在lib中有Qt,你可以要求申请对象的线程。应用程序对象总是生活在主要的gui线程中。
void fooWorker()
{
const bool isGuiThread =
QThread::currentThread() == QCoreApplication::instance()->thread();
}