Название: Как исключить принудительное завершение программы при выключении ПК? Отправлено: Lion от Апрель 25, 2010, 11:18 Выяснилась такая ситуация: при выглючении ПК Qt генерирует сигнал QCoreApplication::aboutToQuit(), но не дожидаясь выполнения его обработчика ОС (Windows) принудительно завершает приложение. Как можно заставить ОС ждать нормального завершения приложения?
Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: alexman от Апрель 25, 2010, 11:55 В приложении есть окно? Если да, то можно попробовать void QWidget::closeEvent ( QCloseEvent * event ) переопределить!?
Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: lit-uriy от Апрель 25, 2010, 12:09 Lion, у тебя приложение убивается без каких либо сообщений со стороны ОСьки?
Обычно Виндовоз даёт немного приложению покопаться. Например эксель иногда не сразу закрывается, тогда выскакивает окно с предложением прибить эксель, но через несколько секунд эксель закрывается сам и это окно исчезает. >>Как можно заставить ОС ждать нормального завершения приложения? это тоже плохо, а вдруг приложение не в меру задумчивое и пользователю придётся ждать. Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: KuZ от Апрель 25, 2010, 12:47 В книге Макс Шлее в 29 главе "Сохранение настроек приложения" есть под глава "Управление сеансом" там написано что нужно наследовать QApplication и переопределить его метод commitData().
Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: Lion от Апрель 25, 2010, 14:47 В приложении есть окно? Если да, то можно попробовать void QWidget::closeEvent ( QCloseEvent * event ) переопределить!? Окна нет.Lion, у тебя приложение убивается без каких либо сообщений со стороны ОСьки? Да, без всяких предупреждений, мне на закрытие нужно максимум пару секунд.В книге Макс Шлее в 29 главе "Сохранение настроек приложения" есть под глава "Управление сеансом" там написано что нужно наследовать QApplication и переопределить его метод commitData(). Возможно, это поможет, надо попробовать, но есть ощущение, что этот вариант не совсем то, что мне нужно. Мне не нужно спрашивать пользователя сохранить что-то или нет, к тому же commitData не будет вызываться при завершении приложения пользователем.Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: lit-uriy от Апрель 25, 2010, 21:11 >>Окна нет.
приложение консольное? Если да, то тут у Qt слабое место, т.к. стандартные способы типа <Ctrl>+<C>, <Ctrl>+<X> ... не завершают приложение, сама Qt этого дела не понимает. Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: Lion от Апрель 27, 2010, 13:30 Приложение не консольное, но главного окна у него нет, может быть свёрнуто в трей.
Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: SASA от Апрель 27, 2010, 17:06 Прочитай про QApplication::commitDataRequest ( QSessionManager & manager )
Название: Re: Как исключить принудительное завершение программы при выключении ПК? Отправлено: Lion от Апрель 27, 2010, 20:11 Вот как раз через использование этого сигнала и решил проблему.
|