Сворачиваю окошко в трэй по кнопке закрытия (стандартно, как в examples):
void MainWindow::closeEvent(QCloseEvent *event) {
if (trayIcon->isVisible()) {
hide();
event->ignore();
}
}
и по кнопке минимизации:
connect(this, SIGNAL(signalPlaceToTray()),this, SLOT(slotPlaceToTray()), Qt::QueuedConnection);
void MainWindow::changeEvent(QEvent *event) {
if (event->type() == QEvent::WindowStateChange)
{
if (isMinimized())
{
event->ignore();
emit signalPlaceToTray();
return;
}
}
QMainWindow::changeEvent(event);
}
void MainWindow::slotPlaceToTray() {
hide();
}
Разворачиваю либо из контекстного меню:
connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));
либо через клик по иконке:
void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) {
switch (reason) {
case QSystemTrayIcon::Trigger:
case QSystemTrayIcon::DoubleClick:
showNormal();
break;
}
}
И когда окно убрано в трей при помощи кнопки минимизации, если разворачивать через клик по иконке - оно восстанавливается из трея в свернутом виде. Не понимаю почему...
Т.е.
1. Окно закрыто крестиком - разворачивается из трея в нормальное состояние и от экшена через меню и по клику
2. Окно свернуто - разворачивается только через экшен, по клику выходит из трея в свернутом виде.
Заранее спасибо!