crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как узнать, завершил ли свою работу виджет?, Как?
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


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 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


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 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


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(QMainWindow @ 31.1.2011, 23:15) *
он отсылает(в данном примере) 500 раз
значит столько раз насоединял. Сколько соединений, столько событий
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.9.2020, 17:16