как подключить сигнал к слоту в другом потоке?
-
06-07-2019 - |
Вопрос
Qt обычно использует сигналы и слоты в одном потоке, поэтому вызов сигнала вызовет слот в том же вызываемом потоке. Можно ли использовать механизм сигнальных слотов для передачи сообщения в поток qt (поэтому слот будет вызываться позже в контексте указанного потока)?
Решение
Сигналы и слоты в разных потоках , которые можно найти на начальной странице официальной документации Qt . р>
Другие советы
Я думаю, что обычный способ справиться с этим состоит в том, чтобы обработчик сигнала ставил в очередь какую-то другую функцию (используя boost :: bind или какую-то подобную функцию функтора), а затем заставлял целевую очередь потоков запускать ее позже.
По крайней мере, с Qt4 это совсем не проблема. Вам просто нужно установить соединение где-нибудь, где у вас есть переменные, указывающие на оба потока. (т.е. обычно в main ())