Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Joss от Август 07, 2009, 22:16



Название: [Решено] Трэй и минимизация окна
Отправлено: Joss от Август 07, 2009, 22:16
Сворачиваю окошко в трэй по кнопке закрытия (стандартно, как в 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. Окно свернуто - разворачивается только через экшен, по клику выходит из трея в свернутом виде.

Заранее спасибо!


Название: Re: Трэй и минимизация окна
Отправлено: Joss от Август 07, 2009, 22:50
Вобщем уточняю, окно разворачивается, но остается на заднем плане. Т.е. вопрос немного меняется - как сделать так, чтобы приложение становилось активным?


Название: Re: Трэй и минимизация окна
Отправлено: Joss от Август 07, 2009, 22:57
Решено, добавил:

activateWindow();