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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Момент отрисовки виджета  (Прочитано 3669 раз)
Crazy Sage
Гость
« : Февраль 05, 2010, 15:14 »

Такая проблема - в программе есть длинные вычисления, надо пока они идут показать пользователю модальное окошко с сообщением.
Сделал такое окошко на базе QDialog'а, перед вычислениями вызываю его show(), после вычисления вызываю его close(), но в итоге вначале идут вычисления, потом окошко открывается на долю секунды и сразу закрывается. Что это, особенности обработки отображения или оптимизационный подарок компилятора? И что с этим делать?
Qt 3.3
Записан
Amigo_sa
Гость
« Ответ #1 : Февраль 05, 2010, 15:22 »

После того, как вы вызываете метод show() диалог еще не показывается на экране. Приложение лишь помещает в очередь события отрисовку диалога. Чтобы все работало, как вы хотите надо перед вычислениями вызывать функцию QApplication::processEvents();
Записан
Crazy Sage
Гость
« Ответ #2 : Февраль 05, 2010, 15:34 »

Про причину я вобщем так и думал, но не знал какой функцией от этого спасаться. Спасибо большое)
Записан
Vass
Гость
« Ответ #3 : Февраль 05, 2010, 17:08 »

Гораздо лучше будет, если Вы вынесете свои длинные вычисления из основного треда программы в котором крутиться ГУИ.
QApplication::processEvents(); прилично замедляет вычисления.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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