Сворачиваю окошко в трэй по кнопке закрытия (стандартно, как в 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. Окно свернуто - разворачивается только через экшен, по клику выходит из трея в свернутом виде.
Заранее спасибо!