QT程序系统托盘

Posted zswd-hwj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT程序系统托盘相关的知识,希望对你有一定的参考价值。

QT托盘用到的类为:QSystemTrayIcon

一、托盘对象创建

 1 //最小化到系统托盘的类
 2 my_system_tray = new QSystemTrayIcon(this);
 3 //设置显示图标
 4 QIcon ico(":/1.png");
 5 my_system_tray->setIcon(ico);
 6 //设置显示文字
 7 my_system_tray->setToolTip("剑来");
 8 //链接最小化托盘类的点击事件信号
 9 connect(my_system_tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
10             this, SLOT(my_activated(QSystemTrayIcon::ActivationReason)));
注意:一定要设置图标,不然在系统托盘那里看不到。

二、事件响应
 1 //最小化托盘后的操作信号槽函数
 2 void MainWindow::my_activated(QSystemTrayIcon::ActivationReason reason)
 3 {
 4     switch (reason)
 5     {
 6     //双击
 7     case QSystemTrayIcon::DoubleClick:
 8     {
 9         //显示主界面,隐藏托盘
10         my_system_tray->hide();
11         this->show();
12     }break;
13 
14     //右键
15     case QSystemTrayIcon::Context:
16     {
17         QMenu *menu = new QMenu(this);
18         menu->addAction(tr(""), this, SLOT(prevFunction()));
19         menu->addAction(tr(""), this, SLOT(nextFunction()));
20         //QCursor::pos()确保右键菜单在当前鼠标坐标出现
21         menu->exec(QCursor::pos());
22         delete menu;
23     }break;
24 
25     //单击
26     case QSystemTrayIcon::Trigger:
27     {
28         qDebug() << this->winId();
29         my_system_tray->showMessage("剑来", "1", QSystemTrayIcon::Information, 50);
30         qDebug() << "end";
31     }break;
32 
33     default:
34     {
35 
36     }break;
37     }
38 }

三、系统托盘显示

1     this->hide();
2     my_system_tray->show();

注:将当前界面隐藏,显示系统托盘对象。

以上是关于QT程序系统托盘的主要内容,如果未能解决你的问题,请参考以下文章

Qt 实现系统托盘,托盘菜单,托盘消息

Qt设置系统托盘图标和程序图标

QT程序系统托盘

qt系统托盘显示无主窗体

Qt5 (Linux/LXDE) 中不显示系统托盘图标

centos7.9下Qt 实现系统托盘,托盘菜单,托盘消息