Russian Qt Forum

Qt => Вопросы новичков => Тема начата: once_again_abc от Ноябрь 08, 2011, 09:20



Название: не приходит сигнал
Отправлено: once_again_abc от Ноябрь 08, 2011, 09:20
сигнал-слот регистрируется успешно (привязка по умолчанию), emit сигнала проходит успешно - пробежался по стеку вызовов, никаких ошибок - сигнал ставится в очередь получателям, но до слотов получателей почему-то не доходит. в чем может быть проблема?


Название: Re: не приходит сигнал
Отправлено: Странник от Ноябрь 08, 2011, 09:27
сигнал-слот регистрируется успешно (привязка по умолчанию), emit сигнала проходит успешно - пробежался по стеку вызовов, никаких ошибок - сигнал ставится в очередь получателям, но до слотов получателей почему-то не доходит. в чем может быть проблема?
соединение прямое или через очередь? если через очередь - цикл обработки событий запущен?


Название: Re: не приходит сигнал
Отправлено: once_again_abc от Ноябрь 08, 2011, 09:39
кажется я знаю в чем причина.

сигнал1 соединен со слотом1 через Qt::QueuedConnection, в слоте1 я жду на WaitCond очень долго. из-за этого любые другие сигналы не доходят до получателей, а интерфейс умирает. как это победить? заводить отдельный поток для обработки условия? других вариантов пока не вижу.


Название: Re: не приходит сигнал
Отправлено: twp от Ноябрь 08, 2011, 13:24
а есть возможность задать время ожиания? тогда можно сделать что-то типа такого:

Код:
  while(!WaitCond(time))
       QCoreApplication::processEvents();