Qt обычно использует сигналы и слоты в одном потоке, поэтому вызов сигнала вызовет слот в том же вызванном сигнале потока. Есть ли способ использовать механизм сигнального слота для передачи сообщения в поток qt (так что слот будет вызываться позже в контексте указанного потока)?
как подключить сигнал к слоту в другом потоке?
Ответы (3)
Сигналы и слоты между потоками находится на начальной странице официальной документации Qt.
person
Georg Schölly
schedule
09.03.2009
Укажите тип подключения, ответ Прямое подключение?
- person Andrew Li; 09.08.2018
Я думаю, что обычный способ справиться с этим - заставить обработчик сигнала поставить в очередь некоторую другую функцию (используя boost :: bind или что-то подобное с функтором), а затем запустить ее целевым потоком.
person
i_am_jorf
schedule
09.03.2009
По крайней мере, с Qt4 это не проблема. Вам просто нужно установить соединение где-нибудь, где есть переменные, указывающие на оба потока. (т.е. обычно в main ())
person
MortenSickel
schedule
22.12.2012