Название: Сигнал и цикл Отправлено: Max Payne от Май 07, 2012, 02:52 Всем привет, извините за тривиальный вопрос, но никак не могу понять.
Есть цыкл в котором обрабатывается стринги, мне нужно каждую итерацию отправлять стринг через сигнал из цыкла, сделал все просто емит из цикла но приходит только один стринг и ничего больше. Я в чем то ошибся ? Спасибо за помощь. Название: Re: Сигнал и цикл Отправлено: Fat-Zer от Май 07, 2012, 08:19 при обычном connect()'е цикл не продолжится, пока обработчик сигнала не завершится, если я правильно понял...
а вообще код в студию... Название: Re: Сигнал и цикл Отправлено: Bepec от Май 07, 2012, 09:00 Код в студию. Зависит от того, какого типа connect вы используете. Если прямой - то цикл продолжится лишь после выполнения слота, если очередь, то будет вполне корректное поведение.
Название: Re: Сигнал и цикл Отправлено: Max Payne от Май 07, 2012, 11:07 Циклы где отсылается сигнал :
Код: do Код: bar = new Prog_bar(this); Название: Re: Сигнал и цикл Отправлено: Fat-Zer от Май 07, 2012, 12:17 ошибка by-design: если это один поток, то весь интерфейс будет тормозить да и сама операция тоже...
если разные, то нужно использовать Qt::QueuedConnection. то что проходит только один стринг определяете визуально? или в отладчике? или в выводе в qDebug()? Название: Re: Сигнал и цикл Отправлено: Max Payne от Май 09, 2012, 07:49 Визуально только один =/ Да и поток один ...
Название: Re: Сигнал и цикл Отправлено: stima от Май 09, 2012, 16:27 Зачем вам общение в одном потоке через сигналы с DirectConnection? Вызывайте просто как метод класса. Это идентично в данном случае.
Если вы будете использовать QuededConnection, то все сигналы будут обработаны когда поток будет "свободен" в Вашем случае это после цикла. И вопрос на засыпку. crVlad.size() больше 1? Название: Re: Сигнал и цикл Отправлено: Max Payne от Май 09, 2012, 21:37 crVlad.size() больше одного, а конект я пишу потому что мне нужно передать этот стринг на другую юи-форму, которой управляет другой класс
Название: Re: Сигнал и цикл Отправлено: stima от Май 10, 2012, 10:30 Чтобы передать переменные в другой класс не обязательно использовать сигнало-слотовую взаимосвязь.
Привидите код слота куда уходит сигнал. |