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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отловить закрытие программы без окон при завершении работы  (Прочитано 2186 раз)
yarick
Гость
« : Август 14, 2013, 09:45 »

Моя программа имеет иконку в трее и окна открываются по мере необходимости.
Мне нужно обработать событие - когда программа выключается при завершении работы Windows. Обычно это делают через closeEvent.
Но в случае когда ни одного окна не открыто - только трей висит - что делать?

Сигнал aboutToQuit() не работает в данном случае. А данные как-то нужно сохранять
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Август 14, 2013, 09:48 »

Посмотрите на QSessionManager
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Август 14, 2013, 10:05 »

Можно отнаследоваться от QApplication и перегрузить %osname%EventFilter для нужных вам ОС.
Примерно так:
Код
C++ (Qt)
#include <qt_windows.h>
bool MyApplication :: winEventFilter( MSG *message, long *result )
{
   UINT& msg = message->message;
   if ( msg == WM_QUERYENDSESSION || msg == WM_ENDSESSION )
   {
       /*Делаем что нужно*/
       *result = ...;
       return true;
   }
   return QApplication::winEventFilter( message, result );
}

Ну или через QCoreApplication::setEventFilter аналогичное попробовать сделать (не пробовал).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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