Обнаружение потока GUI в библиотеке Qt

Мне нужно знать, в каком контексте работает моя функция, это основной поток графического интерфейса или какой-то рабочий поток.

Я не могу использовать простое решение для хранения указателя QThread в основной функции и сравнить его с QThread:: currentThread(), потому что я пишу библиотеку, и у меня нет доступа к основной функции. Я могу, конечно, создать функцию InitMyLibary() и потребовать, чтобы пользователь библиотеки вызывал ее в контексте потока GUI, но я действительно против этого.

Ответы

Ответ 1

Если у вас есть Qt в lib, вы можете запросить поток объекта приложения. Объект приложения всегда живет в основном потоке gui.

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

}