Обнаружение потока GUI в библиотеке Qt
Мне нужно знать, в каком контексте работает моя функция, это основной поток графического интерфейса или какой-то рабочий поток.
Я не могу использовать простое решение для хранения указателя QThread в основной функции и сравнить его с QThread:: currentThread(), потому что я пишу библиотеку, и у меня нет доступа к основной функции. Я могу, конечно, создать функцию InitMyLibary() и потребовать, чтобы пользователь библиотеки вызывал ее в контексте потока GUI, но я действительно против этого.
Ответы
Ответ 1
Если у вас есть Qt в lib, вы можете запросить поток объекта приложения. Объект приложения всегда живет в основном потоке gui.
void fooWorker()
{
const bool isGuiThread =
QThread::currentThread() == QCoreApplication::instance()->thread();
}