QMainWindow
31.1.2011, 19:48
Добрый вечер!
Вопрос в названии. Есть много виджетов, которые при достижении определенного условия посылают сигнал с параметрами в слот главного окна. Там слот по очереди их обрабатывает и выходные данные записывает в вектор-массив. А затем после обработки данных со ВСЕХ виджетов отсылает этот массив в эти же виджеты. На деле у меня сигнал посылается не один раз со ВСЕЙ информацией, а (например если виджетов 500 штук) - 500 раз. И каждый следующий раз в массиве появляется на одно значение больше и уж в 500й раз он содержит все сразу. Комп работает 499 раз в пустую. Поэтому нужна фича, которая укажет программе, что как только последний сигнал от последнего виджета принят, обработан и выходные параметры добавлены в вектор, вот только тогда выслать наконец сигнал с ним. Как это сделать?
Алексей1153
31.1.2011, 20:05
а что понимается под завершением работы ?
мне кажется, тут не сигналы нужны, а массив указателей на виджеты - его надо сканировать и забирать информацию через методы виджетов
QMainWindow
31.1.2011, 20:13
Имеется ввиду такая ситуация:
В некоторый момент времени Г.О. приказывает всем виджетам сделать проверку. Соответствующий слот в виджете выполняет ее и отсылает сигнал с данными в главное окно. Все, на этом работа виджета (его слота) закончилась.
Алексей1153
31.1.2011, 20:18
пытаюсь осознать...
кое как понял фразу ) Но вот всё равно сигналы\слоты тут не нужны
в цикле пробегаешься по массиву указателей, у каждого виджета зовёшь метод "проверки", сохраняешь результат, вернутый из метода. И так до конца
Цитата
И каждый следующий раз в массиве появляется на одно значение больше и уж в 500й раз он содержит все сразу
Так а в чем вообще проблема? Проверяй длину массива после добавления нового значения. Либо поднятые флаги в зависимости от того, как там у тебя реализовано. Если длина массива (количество поднятых флагов) равна количеству виджетов - значит это был последний... Или я что-то не так понял?
QMainWindow
31.1.2011, 21:15
Число виджетов, отсылающих сигнал неизвестно (ну можно найти их число, но это долго и нудно). Проблема в том, что вместо отсыла сигнала РОВНО ОДИН раз, он отсылает(в данном примере) 500 раз (т.е. 499 в пустую).
А по поводу указателей и цикла - попробую!)
Litkevich Yuriy
31.1.2011, 21:58
Цитата(QMainWindow @ 31.1.2011, 23:15)
он отсылает(в данном примере) 500 раз
значит столько раз насоединял. Сколько соединений, столько событий
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.