Название: Окошко закрывается раньше времени Отправлено: taifun от Июля 15, 2011, 12:41 День добрый!
Есть форма на форме виджет, который выводит численное значение, допустим 100. после окончания работы с программой, при закрытии окна сначала необходимо понизить 100 до 1 через N-ый промежуток времени и все это отображать в виджете и только после этого закрывать окно. Процедура понижения 100 до 1 находится в отдельном классе и я ее вызываю в деструкторе. В итоге что получаю: окошко закрывается и я не вижу результата работы. Как мне сделать, чтобы окошко закрывалось после достижения счетчика единицы? Название: Re: Окошко закрывается раньше времени Отправлено: NortT от Июля 15, 2011, 17:00 А если счетчик этот в отдельный метод запихать?
Название: Re: Окошко закрывается раньше времени Отправлено: _OLEGator_ от Июля 16, 2011, 10:58 Вызывай не в деструкторе, а в QWidget::closeEvent ( QCloseEvent * event )
Название: Re: Окошко закрывается раньше времени Отправлено: taifun от Июля 18, 2011, 09:38 Вызывай не в деструкторе, а в QWidget::closeEvent ( QCloseEvent * event ) Сделал, теперь окошко не закрывается пока не счетчик не достигнет единицы, но и результата понижения я не вижу. Название: Re: Окошко закрывается раньше времени Отправлено: _OLEGator_ от Июля 18, 2011, 10:29 покажи код, где ты понижаешь значение
Название: Re: Окошко закрывается раньше времени Отправлено: taifun от Июля 19, 2011, 13:20 Код: void finish_work::run() исходный код прикрепил. Название: Re: Окошко закрывается раньше времени Отправлено: _OLEGator_ от Июля 19, 2011, 13:48 Код
В closeEvent вызов функции end.wait() блокирует главный поток и следовательно его перерисовку, непонятно зачем для этого поток создавать, нужно либо убрать поток, либо реализовать уменьшение счетчика иначе. Название: Re: Окошко закрывается раньше времени Отправлено: taifun от Июля 19, 2011, 14:22 Поток убрал, результат тот же. А как подругому можно реализовать? Но реализовать надо именно в finish_work
Название: Re: Окошко закрывается раньше времени Отправлено: _OLEGator_ от Июля 19, 2011, 14:34 вызвав QApplication::processEvents() после sleep(1) добьешься нужного результата, но в последнем проекте идет вызов функции без выполнения ее в потоке
Название: Re: Окошко закрывается раньше времени Отправлено: taifun от Июля 19, 2011, 14:57 но в последнем проекте идет вызов функции без выполнения ее в потоке Cовершенно верно, это я понимаю ... с QApplication::processEvents(); заработало. так как надо. Спасибо. |