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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Трэй и минимизация окна  (Прочитано 3487 раз)
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. Окно свернуто - разворачивается только через экшен, по клику выходит из трея в свернутом виде.

Заранее спасибо!
« Последнее редактирование: Август 07, 2009, 22:58 от Joss » Записан
Joss
Гость
« Ответ #1 : Август 07, 2009, 22:50 »

Вобщем уточняю, окно разворачивается, но остается на заднем плане. Т.е. вопрос немного меняется - как сделать так, чтобы приложение становилось активным?
Записан
Joss
Гость
« Ответ #2 : Август 07, 2009, 22:57 »

Решено, добавил:

activateWindow();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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