Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kambala от Май 14, 2010, 22:28



Название: появление окна из трея
Отправлено: kambala от Май 14, 2010, 22:28
Здравствуйте. Возникла проблема - окно не становится видимым после нажатие на иконку в трее, оно только появляется на панели задач. Уже перепробовал всякие комбинации с activateWindow(), raise(), setFocus() - не помогает.
Код
C++ (Qt)
connect(sysTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(sysTrayActivated(QSystemTrayIcon::ActivationReason)));
...
void AutoEmpImporter::sysTrayActivated(QSystemTrayIcon::ActivationReason reason)
{
if (reason == QSystemTrayIcon::DoubleClick)
show();
}
 
Подскажите пожалуйста как исправить.


Название: Re: появление окна из трея
Отправлено: kibsoft от Май 15, 2010, 00:19
У меня такой код нормально работает:
Код:
void MainWindow::iconTrayActivated(QSystemTrayIcon::ActivationReason reason)
{
    if (reason==QSystemTrayIcon::DoubleClick) {//если двойной щелчок
        show();//показываем окно
        trayIcon->hide();//убираем иконку
    }
}
отличие только в убирании иконки...


Название: Re: появление окна из трея
Отправлено: ритт от Май 15, 2010, 17:12
поиск по форуму рулит


Название: Re: появление окна из трея
Отправлено: kambala от Май 17, 2010, 17:51
Спасибо, вот это (http://"http://www.prog.org.ru/index.php?topic=7821.msg40385#msg40385") решение сработало, но это не совсем то, что хотелось бы. Неужели никак нельзя заставить окно появляться именно при QSystemTrayIcon::DoubleClick?

добавлено:
решение оказалось простым:
Код
C++ (Qt)
if (reason == QSystemTrayIcon::DoubleClick)
{
setWindowState(windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
show();
activateWindow();
}