как подключить сигнал к слоту в другом потоке?

Qt обычно использует сигналы и слоты в одном потоке, поэтому вызов сигнала вызовет слот в том же вызванном сигнале потока. Есть ли способ использовать механизм сигнального слота для передачи сообщения в поток qt (так что слот будет вызываться позже в контексте указанного потока)?


person grigoryvp    schedule 09.03.2009    source источник


Ответы (3)


Сигналы и слоты между потоками находится на начальной странице официальной документации Qt.

person Georg Schölly    schedule 09.03.2009
comment
Укажите тип подключения, ответ Прямое подключение? - person Andrew Li; 09.08.2018

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

person i_am_jorf    schedule 09.03.2009

По крайней мере, с Qt4 это не проблема. Вам просто нужно установить соединение где-нибудь, где есть переменные, указывающие на оба потока. (т.е. обычно в main ())

person MortenSickel    schedule 22.12.2012