一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

一、效果

1、点击“闪烁”按钮可以模拟消息闪动,点击后弹出消息详情对话框;
2、托盘右键菜单包括:“显示”和“关闭”。
3、双击托盘显示程序,关闭后隐藏到托盘。

二、源码

主要代码如下:

复制代码
 1 //初始化托盘
 2 void Dialog::InitTray()
 3 {
 4     QMenu *contexMenu = new QMenu(this);           //注意右键菜单的父对象,在窗口销毁后要把菜单也销毁掉
 5     QAction *shutAction = new QAction("关闭",this);
 6     shutAction->setIcon(QIcon(":/image/close.png"));
 7     QAction *showAtion = new QAction("显示",this);
 8     showAtion->setIcon(QIcon(":/image/show.png"));
 9 
10     contexMenu->addAction(shutAction);
11     contexMenu->addSeparator();
12     contexMenu->addAction(showAtion);
13 
14     connect(shutAction,SIGNAL(triggered()),this,SLOT(programExit()));          //点击了这两个菜单
15     connect(showAtion,SIGNAL(triggered()),this,SLOT(ShowNormal()));
16 
17     m_systemTray = new QSystemTrayIcon(this);
18     m_systemTray->setToolTip("Qt 托盘");   //放在图表上时候显示
19     m_systemTray->setContextMenu(contexMenu);
20     m_systemTray->setIcon(QIcon(":/image/qicon.png"));
21     m_systemTray->show();
22     connect(m_systemTray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(trayIconActived(QSystemTrayIcon::ActivationReason)));
23     //connect(m_systemTray, &QSystemTrayIcon::messageClicked, this, &Dialog::ShowMessageBox);
24 
25     connect(timerT, &QTimer::timeout, this, &Dialog::sltTimerT);
26     connect(timerNoT, &QTimer::timeout, this, &Dialog::sltTimerNoT);
27 }
28 
29 
30 //托盘消息闪动
31 void Dialog::on_blingButton_clicked()
32 {
33     timerT->start(300);
34     m_bShowingMsg = true;
35     ui->blingButton->setEnabled(false);
36     ui->noblingButton->setEnabled(true);
37 }
38 
39 void Dialog::on_noblingButton_clicked()
40 {
41     if (timerT->isActive())
42     {
43         timerT->stop();
44     }
45 
46     if (timerNoT->isActive())
47     {
48         timerNoT->stop();
49     }
50 
51     m_bShowingMsg = false;
52     ui->blingButton->setEnabled(true);
53     ui->noblingButton->setEnabled(false);
54 
55     m_systemTray->setIcon(QIcon(":/image/qicon.png"));
56     m_systemTray->show();
57 }
58 
59 //刷新托盘图标
60 void Dialog::sltTimerT()
61 {
62     m_systemTray->setIcon(QIcon(":/image/qicon.png"));
63     timerNoT->start(300);
64     if(timerT->isActive())
65     {
66         timerT->stop();
67     }
68 }
69 
70 void Dialog::sltTimerNoT()
71 {
72     m_systemTray->setIcon(QIcon(":/image/qicon_no.png"));
73     timerT->start(300);
74     if(timerNoT->isActive())
75     {
76         timerNoT->stop();
77     }
78 }
复制代码

 

posted on   一杯清酒邀明月  阅读(908)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-11-10 VTK SetInputData()和 SetInputConnection()替换SetInput()
2020-11-10 VTK二维图像的三维显示
2020-11-10 VtkTransform 和 SetPosition的区别
2020-11-10 Qt QList 遍历元素
2020-11-10 Qt QList详解
2020-11-10 QT QList介绍及应用
2020-11-10 Qt 生成随机区间浮点数 generateRand
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示