Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: Crazy Sage от Февраль 05, 2010, 15:14



Название: Момент отрисовки виджета
Отправлено: Crazy Sage от Февраль 05, 2010, 15:14
Такая проблема - в программе есть длинные вычисления, надо пока они идут показать пользователю модальное окошко с сообщением.
Сделал такое окошко на базе QDialog'а, перед вычислениями вызываю его show(), после вычисления вызываю его close(), но в итоге вначале идут вычисления, потом окошко открывается на долю секунды и сразу закрывается. Что это, особенности обработки отображения или оптимизационный подарок компилятора? И что с этим делать?
Qt 3.3


Название: Re: Момент отрисовки виджета
Отправлено: Amigo_sa от Февраль 05, 2010, 15:22
После того, как вы вызываете метод show() диалог еще не показывается на экране. Приложение лишь помещает в очередь события отрисовку диалога. Чтобы все работало, как вы хотите надо перед вычислениями вызывать функцию QApplication::processEvents();


Название: Re: Момент отрисовки виджета
Отправлено: Crazy Sage от Февраль 05, 2010, 15:34
Про причину я вобщем так и думал, но не знал какой функцией от этого спасаться. Спасибо большое)


Название: Re: Момент отрисовки виджета
Отправлено: Vass от Февраль 05, 2010, 17:08
Гораздо лучше будет, если Вы вынесете свои длинные вычисления из основного треда программы в котором крутиться ГУИ.
QApplication::processEvents(); прилично замедляет вычисления.