Обнаружение потока GUI в библиотеке Qt - PullRequest
14 голосов
/ 10 июня 2009

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

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

1 Ответ

26 голосов
/ 11 июня 2009

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

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...