Qt5:QSystemTrayIcon类实现程序托盘图标
windows下,在许多应用程序中都会实现一个托盘图标,用于隐藏应用程序窗口时还能对该应用程序进行简单的操作,例如 QQ ,renren等程序
那么,在Qt中,如何实现呢? 这就要用到Qt提供的 QSystemTrayIcon 这个类了。
来看看这个类中都有哪些常用的成员函数
首先是这个类的构造函数
QSystemTrayIcon(QObject * parent = 0)
QSystemTrayIcon(const QIcon & icon, QObject * parent = 0)
可以看出,使用这个类需要一个托盘图标 , 和托盘图标标识的窗口对象的指针
再来是一个设置右键菜单的函数
void setContextMenu(QMenu * menu)
在使用带有托盘的应用程序的时候,在操作托盘图标的时候, 点击或右击托盘图标的时候,一般会弹出一个菜单用于操作这个应用程序,在qt中,菜单就是通过
该函数设置的。
还有以下的一些函数,功能都可以从这些函数的命名上看出来
void setIcon(const QIcon & icon) //设置托盘的图标
void setToolTip(const QString & tip)//设置托盘图标的提示信息
void show() //该函数适用于显示托盘图标的函数
。。。。
特别要谈一下这个函数
void showMessage(const QString & title, const QString & message,...)
这个函数是用于实现弹出气泡通知窗口的函数,调用这个函数系统右下角就会弹出一个 气泡提示窗口,提示某些信息
下面就来实现一个简单的带托盘程序
主要的托盘设置代码如下
QSystemTrayIcon *pannelIcon = new QSystemTrayIcon(this);
pannelIcon->setIcon(QIcon("pannelicon.ico"));
pannelIcon->show();
将这段代码放到窗口程序的构造函数中
编译连接,一个简单的带托盘程序就完成了
另外的tooltips , menu 等都可以通过简单调用该类提供的函数来实现
关于类似QQ的闪烁托盘图标的实现, 可以通过加个定时器来完成.利用超时信号 timeout(),
轮流调用 setIcon(QIcon("")); 和 setIcon(QIcon("xxx.ico")); 来实现
Qt5:QSystemTrayIcon类实现程序托盘图标的更多相关文章
- 使用System.Timers.Timer类实现程序定时执行
使用System.Timers.Timer类实现程序定时执行 在C#里关于定时器类有3个:System.Windows.Forms.Timer类.System.Threading.Timer类和Sys ...
- 用Stopwatch类获得程序运行时间
我们可以用Stopwatch类获得程序的运行时间,在优化代码时,可以用此方法来查看优化前后程序所耗费的时间 //Stopwatch类別在System.Diagnostics命名空间里 Stopwatc ...
- win32进阶之路:程序托盘图标+右键弹出菜单
开场白 本次介绍两个非常棒且实用的技巧:程序托盘图标和右键弹出菜单,效果如下图. 程序托盘图标用了迅雷的图标,右键点击时候会弹出三个选项的菜单. 程序托盘图标设置 我会用尽可能清晰明了的步骤介绍方式 ...
- [C#] 常用工具类——应用程序属性信息访问类
using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespac ...
- 对类HelloWorld程序中添加一个MessageBox弹窗
对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以 ...
- java--final 类在程序中的影响
很多时候我都记不住也弄不太清楚final类在程序的中的作用到底为何,今天正好看到了,就把它记下来,省的以后忘了的时候到处找资料~ final修饰符对程序的影响总的来说有三点: (1)final可以修饰 ...
- qt5.5实现 记事本程序
最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...
- vs调试程序时发现变量、类等程序找不到混乱问题
vs中不能同时打开两个解决方案名称相同的程序,否则会运行时出现混乱,比如变量监测不到,类的属性不全等问题
- Application类-应用程序生命周期
1.创建Application对象 新建WPF程序后,排除掉WPF自动创建的App.xaml,我们自定义一个类,在该类的Main()方法中,创建Application对象,然后调用创建一个窗口对象,最 ...
随机推荐
- hdu_5778_abs(暴力)
题目链接:hdu_5778_abs 题意: 给你一个数x,然你找一个y,这个y只能被素数分解,每一个素数恰好出现2次,求y-x的绝对值最小 题解: 给官方的 ps:数据太水,打35个素数也能过 #i ...
- 括号匹配(C++ Stack)
最近在学习C++,所以使用stack容器来实现括号匹配 /**********************************************************/ stack<Ty ...
- Linux Ubuntu 内核升级
方法一 : 1 更新系统源 apt-get update 2 搜索内核文件 apt-cache search linux-image 3 安装 apt-get install -y linux-im ...
- MySQL数据库分区修改【原创】
之前有个表分区添加时s201607添加成s201617,所以在查询7月份数据时报错 错误的 alter table statistics_ticket add partition (partition ...
- 如何从Apache官网下载apache
apache服务器官网地址:http://httpd.apache.org/ linux版本下载比较容易,以windows版本,apache 2.4为例. 点击download 此处随便选一个提供商. ...
- redis学习一
一.简介: 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.MongoDB ...
- java问题诊断
http://techblog.youdao.com/?p=961 http://linuxtools-rst.readthedocs.org/zh_CN/latest/advance/03_opti ...
- 如果更新包更新包现场,class文件更新过去,没有改变,及时删掉,照样能进那个模块的问题。
这是打更新包需要注意的问题: 带$的同名文件也需要copy过来打更新包,不能只更新一个class文件,找了1天的错误,简直日乐购.
- ant android打包--学习第一弹
1. 准备工作 用eclipse创建一个android项目 安装ant和SDK,并且添加到系统环境变量 2.ant 使用 2.1 ant简单的帮助命令 ant -p 2.2 创建ant配置文件%AND ...
- js设置全局变量ajax中赋值
js设置全局变量,在ajax中给予赋值赋值不上问题解决方案 方案一. //在全局或某个需要的函数内设置Ajax异步为false,也就是同步. $.ajaxSetup({async : false}); ...