Название: Minimize System Tray Отправлено: spectre71 от Сентябрь 04, 2009, 09:38 Кто-нибудь знает как сделать минимизацию приложения в System Tray и восстановление его обратно?
1) Через QSystemTrayIcon создаем иконку в System Tray, с этим все просто 2) При нажатии кнопки "Minimize" на "Title Bar", окно программы должно минимизироваться и должна исчезнуть кнопка для приложения из панели задач. 3) При щелчке на иконке в System Tray состояние окна должно быть восстановлено и оно должно быть переведено на передний план(на передний план окно переводиться и в случае когда оно не минимизировано) 4) Необходима адекватная работа под Windows, Mac и Linux Название: Re: Minimize System Tray Отправлено: BaltikS от Сентябрь 04, 2009, 10:22 Могу только посоветовать поймать событие WindowStateChange и проверить WindowState == Qt::WindowMinimized далее сделать hide(). А дальше как в примере про SystemTray...
Название: Re: Minimize System Tray Отправлено: BaltikS от Сентябрь 04, 2009, 10:46 Доработал пример с треем. Добавляем новый эвент в форму...
Код: void Window::changeEvent ( QEvent * event ) Название: Re: Minimize System Tray Отправлено: spectre71 от Сентябрь 05, 2009, 08:46 Могу только посоветовать поймать событие WindowStateChange и проверить WindowState == Qt::WindowMinimized далее сделать hide(). А дальше как в примере про SystemTray... К сожалению под Lunix - hide() не помогает, кнопка из панели задач не исчезает!Название: Re: Minimize System Tray Отправлено: BlackTass от Сентябрь 05, 2009, 08:57 Да, с линуксом есть проблемы в этом плане (насколько мне известно проявляется только в кедах, на гноме когда проверяли все аккуратно сворачивалось в трей).
Название: Re: Minimize System Tray Отправлено: Rcus от Сентябрь 05, 2009, 09:13 Хм, странно... посмотрел KDE приложения - нормально они в трей сворачиваются: все сводится к переопределению closeEvent и вызовам hide(); e->ignore();
UPD: хм, сначала подумал что что-то я не то сказал, но все же это работает и с QEvent::WindowStateChange Название: Re: Minimize System Tray Отправлено: spectre71 от Сентябрь 05, 2009, 09:26 Хм, странно... посмотрел KDE приложения - нормально они в трей сворачиваются: все сводится к переопределению closeEvent и вызовам hide(); e->ignore(); Под Windows и Mac - работает. Под "CentOs"/"Gnome" - из панели задач не исчезает. Под KDE - не проверял Код
Название: Re: Minimize System Tray Отправлено: BlackTass от Сентябрь 05, 2009, 19:10 Код: void MainWindow::changeEvent (QEvent *event) Это работает под виндой, под гномом (сам не проверял правда, но заказчик утверждает что у него работает), а под кедами все равно остается при минимизации в таскбаре. |