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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как грамотно реализовать закрытие программы только через трей/меню? (решено)  (Прочитано 3220 раз)
Eten
Гость
« : Март 24, 2013, 14:40 »

Всем привет, завис на простой вещи.  Непонимающий

Все никак не могу понять, как грамотно реализовать закрытие программы только через трей/меню (чтобы при нажатии на крестик окна, закрытие заменялось сворачиванием, а из трея/меню оно закрывалось)?

Понятно, что надо переопределять функцию QWidget::closeEvent(). Но тут только лишь отлавливается само событие, а не источник вызова. Поискал в классе QCloseEvent (класс передаваемого параметра) возможность определения откуда вызвано закрытие программы (от самого окна, пункта меню окна, или из пункта контекстного меню трея), но не нашел ничего путного. Есть конечно "самый простой" вариант - это добавить дополнительную переменную в класс окна, которая будет определять источник вызова окна, а есть ли способ аккуратней и грамотней?!

З.Ы.
Видел такую возможность во многих программах, но никак не понял реализации этой фишки.  Непонимающий
« Последнее редактирование: Март 26, 2013, 07:12 от Eten » Записан
dio
Гость
« Ответ #1 : Март 24, 2013, 16:15 »

Все гораздо проще:

Код:
QApplication::setQuitOnLastWindowClosed(false);


Записан
Bepec
Гость
« Ответ #2 : Март 24, 2013, 17:32 »

Обычным делом - флагом. В closeEvent тырякаем выходить только когда флаг равен true; А true присваиваем в момент нажатия "Выход" в контекстном меню.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Март 24, 2013, 20:42 »

такое подойдёт?

Код
C++ (Qt)
trayMenu->addAction(tr("Quit"), qApp, SLOT(quit()));
 
« Последнее редактирование: Март 24, 2013, 20:45 от Alex Custov » Записан
Eten
Гость
« Ответ #4 : Март 26, 2013, 07:03 »

Всем спасибо заработало.  Веселый

З.Ы.
Последний вариант запомню на всякий случай, оригинальный подход.  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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