Russian Qt Forum
Май 15, 2024, 22:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QEventLoop как работает?  (Прочитано 9719 раз)
anDROid
Гость
« : Апрель 03, 2011, 08:38 »

Код:
QEventLoop loop(this);
        connect(ui->pushButton_2,SIGNAL(clicked()),&loop,SLOT(quit()));
        //blabla
    loop.exec();
Я так понял,что QEventLoop выполняет в цикле команды, находящиеся между определением лупа и exec(),до тех пор пока не получит quit().
Данным кодом я хотел заставить выполняться код //blabla пока я не нажму pushButton_2,но луп почему-то выполняется только один раз...
В чем фишка?Где я ступил?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 03, 2011, 13:44 »

loop аллокирован на стеке и после loop.exec(); будет уничтожен и при следующем нажатии на кнопку по идее твоя прикладина должна была грохнуться.
Записан

Qt 5.11/4.8.7 (X11/Win)
anDROid
Гость
« Ответ #2 : Апрель 03, 2011, 17:55 »

loop аллокирован на стеке
По-русски пжст,как будет правильно?
Записан
Sahab
Гость
« Ответ #3 : Апрель 03, 2011, 22:09 »

как только выходит из блока(удаляется объект) происходит дисконнект, с чего грохатся...
а по теме - QEventLoop выполняет в цикле не команды, а обрабатывает отложенные события(и поступающие в дальнейшем) до тех пор пока не получит quit()

к примеру вместо blablabla могла быть асинхронная(!) отправка данных в сокет, если бы вместо этого была бы синхронная операция, то она бы выполнилась до loop.exec();
« Последнее редактирование: Апрель 03, 2011, 22:15 от Sahab » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 22.