首页 > 其他分享 >Qt 托盘QSystemTrayIcon的基础使用

Qt 托盘QSystemTrayIcon的基础使用

时间:2022-11-10 10:36:01浏览次数:47  
标签:systemTray Qt QSystemTrayIcon 托盘 timerT Dialog timerNoT setIcon

一、效果

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 }

 

标签:systemTray,Qt,QSystemTrayIcon,托盘,timerT,Dialog,timerNoT,setIcon
From: https://www.cnblogs.com/ybqjymy/p/16876249.html

相关文章

  • Windows下安装搭建MQTT服务器
    服务器常用的有emqx,还有apacheapolle,这里用的是emqx服务端以及客户端可以使用MQTTnet(NuGet包)一、MQTT服务器(emqx)搭建1.下载服务器MQTTBroker从https://www.emqx.i......
  • Qt 隐藏mainWindow
    开始时不显示主界面,登陆按钮进行确认后再显示-尝试:在mainWindow这一类中调用hide()函数,但主窗口在仍会显示-解决:在main()函数中删除w.show()(w是mainWindow类),main()window......
  • Qt-Qt使用回调函数方(callback)
     实例代码:.pro1QT+=coregui23greaterThan(QT_MAJOR_VERSION,4):QT+=widgets45CONFIG+=c++1167#Thefollowingdefinemakesy......
  • Qt编写ffmpeg本地摄像头显示(16路本地摄像头占用3.2%CPU)
    一、前言内核ffmpeg除了支持本地文件、网络文件、各种视频流播放以外,还支持打开本地摄像头,和正常的解析流程一致,唯一的区别就是在avformat_open_input第三个参数传入个AVI......
  • AIRIOT物联网低代码平台如何配置MQTT驱动?
    MQTT驱动配置简介MQTT全称为消息队列遥测传输(英语:MessageQueuingTelemetryTransport),是ISO标准(ISO/IECPRF20922)下基于发布(Publish)/订阅(Subscribe)范式的消息协......
  • VS+Qt - Visual Studio2017+Qt5.14安装配置教程
    转载自:https://zhuanlan.zhihu.com/p/351084915简介1、VisualStudio是一个集成开发IDE:集成开发环境(IDE,IntegratedDevelopmentEnvironment)是用于提供程序开发环境的......
  • 自定义的Qt仪表盘控件
    我做的仪表盘控件是个功能简单的显示控件。它默认的显示范围是[0,100],不能修改它的显示范围,因为不同的数值显示在前界面上的效果不同,可能导致显示重叠。成员函数只有一个s......
  • Qt 系统托盘图标不显示的问题
    QIconicon=QIcon(":/recources/recources/logo.ico");//将icon设到QSystemTrayIcon对象中mSysTrayIcon->setIcon(icon);这是设置语句,其他的都实现了,就是托盘显示不了图......
  • VS_QT——连接MySQL数据库
    原文链接连接2链接3           ......
  • html中使用mqtt
    MQTT.js 是一个开源项目,支持nodejs和Browserjs,这里对比一下nodejs和Browserjs的用法:注:nodejs是运行在webserver的js,Browserjs意思是运行在浏览器上的js,也就是H......