Как узнать, завершил ли свою работу виджет?, Как? |
Здравствуйте, гость ( Вход | Регистрация )
Как узнать, завершил ли свою работу виджет?, Как? |
QMainWindow |
31.1.2011, 19:48
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый вечер!
Вопрос в названии. Есть много виджетов, которые при достижении определенного условия посылают сигнал с параметрами в слот главного окна. Там слот по очереди их обрабатывает и выходные данные записывает в вектор-массив. А затем после обработки данных со ВСЕХ виджетов отсылает этот массив в эти же виджеты. На деле у меня сигнал посылается не один раз со ВСЕЙ информацией, а (например если виджетов 500 штук) - 500 раз. И каждый следующий раз в массиве появляется на одно значение больше и уж в 500й раз он содержит все сразу. Комп работает 499 раз в пустую. Поэтому нужна фича, которая укажет программе, что как только последний сигнал от последнего виджета принят, обработан и выходные параметры добавлены в вектор, вот только тогда выслать наконец сигнал с ним. Как это сделать? |
|
|
Алексей1153 |
31.1.2011, 20:05
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
а что понимается под завершением работы ?
мне кажется, тут не сигналы нужны, а массив указателей на виджеты - его надо сканировать и забирать информацию через методы виджетов |
|
|
QMainWindow |
31.1.2011, 20:13
Сообщение
#3
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Имеется ввиду такая ситуация:
В некоторый момент времени Г.О. приказывает всем виджетам сделать проверку. Соответствующий слот в виджете выполняет ее и отсылает сигнал с данными в главное окно. Все, на этом работа виджета (его слота) закончилась. Сообщение отредактировал QMainWindow - 31.1.2011, 20:14 |
|
|
Алексей1153 |
31.1.2011, 20:18
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
пытаюсь осознать...
кое как понял фразу ) Но вот всё равно сигналы\слоты тут не нужны в цикле пробегаешься по массиву указателей, у каждого виджета зовёшь метод "проверки", сохраняешь результат, вернутый из метода. И так до конца |
|
|
Rocky |
31.1.2011, 20:41
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Цитата И каждый следующий раз в массиве появляется на одно значение больше и уж в 500й раз он содержит все сразу Так а в чем вообще проблема? Проверяй длину массива после добавления нового значения. Либо поднятые флаги в зависимости от того, как там у тебя реализовано. Если длина массива (количество поднятых флагов) равна количеству виджетов - значит это был последний... Или я что-то не так понял? |
|
|
QMainWindow |
31.1.2011, 21:15
Сообщение
#6
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Число виджетов, отсылающих сигнал неизвестно (ну можно найти их число, но это долго и нудно). Проблема в том, что вместо отсыла сигнала РОВНО ОДИН раз, он отсылает(в данном примере) 500 раз (т.е. 499 в пустую).
А по поводу указателей и цикла - попробую!) |
|
|
Litkevich Yuriy |
31.1.2011, 21:58
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 5:57 |