crossplatform.ru

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

> зависание программы написанной на Qt
eldar85
  опции профиля:
сообщение 17.3.2010, 23:20
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


столкнулся со странной проблемой, написал программу, отлично все работает, но если она выполняет процесс и по окну ткнешь мышью, окно зависает и пишет что программа не отвечает, но действие все же она свое доделывает до конца, потому как после окончания выполнения процесса она выдает конечный результат и окно стает опять активным) хотелось бы понять почему так происходит, ниужели чтобы программа работала без зависания я не могу даже просто свернуть окошко проги?
может какие то ошибки наделал, очень нужен совет мастеров Qt)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
eldar85
  опции профиля:
сообщение 18.3.2010, 3:09
Сообщение #2


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


да процесс на самом деле долгий и обрабатывать событие я пока не умею))
у меня идет процесс в цикле for.
for находиться в слоте, получается я нажимаю кнопку и запускается этот цикл, он работает с сетью, он может повториться и сто и 1000 раз, это может занимать от нескольких секунд, до пары минут и в это время окно лучше не трогать, а то зависает)))
а это вызов void QCoreApplication::processEvents ( QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents ) [static]
нужно делать в этом самом цикле for или где то отдельно? я еще новичек просто в кьюти, поэтому сложно догадаться сразу что и куда)
спасибо что откликаетесь)

Сообщение отредактировал eldar85 - 18.3.2010, 4:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 18.3.2010, 7:30
Сообщение #3


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

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(eldar85 @ 18.3.2010, 3:09) *
for находиться в слоте, получается я нажимаю кнопку и запускается этот цикл, он работает с сетью, он может повториться и сто и 1000 раз, это может занимать от нескольких секунд, до пары минут и в это время окно лучше не трогать, а то зависает)))

В Qt есть возможность работать с сетью асинхронно, тогда таких проблем не будет.

Цитата(eldar85 @ 18.3.2010, 3:09) *
а это вызов void QCoreApplication::processEvents ( QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents ) [static]
нужно делать в этом самом цикле for или где то отдельно?

Да, в этом самом цикле.
Но это все таки не очень удобно, интерфейс как бы "оживет", но все равно программа ничего существенного сделать не сможет, пока этот цикл не отработает.
Посмотри в примерах, как работать с сетью асинхронно или выполняй "тяжелые" действия в отдельных потоках.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 19.12.2024, 9:03