-
Notifications
You must be signed in to change notification settings - Fork 0
/
systemtray.cpp
61 lines (51 loc) · 2.31 KB
/
systemtray.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "systemtray.h"
#include <QMenu>
#include <QSystemTrayIcon>
SystemTray::SystemTray(QObject *parent) : QObject(parent)
{
// Создаём контекстное меню с двумя пунктами
QMenu *trayIconMenu = new QMenu();
QAction * viewWindow = new QAction(trUtf8("Развернуть окно"), this);
QAction * quitAction = new QAction(trUtf8("Выход"), this);
/* подключаем сигналы нажатий на пункты меню к соответсвующим сигналам для QML.
* */
connect(viewWindow, &QAction::triggered, this, &SystemTray::signalShow);
connect(quitAction, &QAction::triggered, this, &SystemTray::signalQuit);
trayIconMenu->addAction(viewWindow);
trayIconMenu->addAction(quitAction);
/* Инициализируем иконку трея, устанавливаем иконку,
* а также задаем всплывающую подсказку
* */
trayIcon = new QSystemTrayIcon();
trayIcon->setContextMenu(trayIconMenu);
trayIcon->setIcon(QIcon(":/Assets/kisspng-translation-google-translate-computer-icons-micros-language-5abddd208a8e67.4592666915223923525675.png"));
trayIcon->show();
trayIcon->setToolTip("Tray Program" "\n"
"Работа со сворачиванием программы трей");
/* Также подключаем сигнал нажатия на иконку к обработчику
* данного нажатия
* */
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
}
/* Метод, который обрабатывает нажатие на иконку приложения в трее
* */
void SystemTray::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch (reason){
case QSystemTrayIcon::Trigger:
// В случае сигнала нажатия на иконку трея вызываем сигнал в QML слой
emit signalIconActivated();
break;
default:
break;
}
}
void SystemTray::hideIconTray()
{
trayIcon->hide();
}
void SystemTray::showMessage(QString message)
{
trayIcon->showMessage("Translate",message,trayIcon->icon(),1000);
}