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类实现程序托盘图标的更多相关文章

  1. 使用System.Timers.Timer类实现程序定时执行

    使用System.Timers.Timer类实现程序定时执行 在C#里关于定时器类有3个:System.Windows.Forms.Timer类.System.Threading.Timer类和Sys ...

  2. 用Stopwatch类获得程序运行时间

    我们可以用Stopwatch类获得程序的运行时间,在优化代码时,可以用此方法来查看优化前后程序所耗费的时间 //Stopwatch类別在System.Diagnostics命名空间里 Stopwatc ...

  3. win32进阶之路:程序托盘图标+右键弹出菜单

     开场白 本次介绍两个非常棒且实用的技巧:程序托盘图标和右键弹出菜单,效果如下图. 程序托盘图标用了迅雷的图标,右键点击时候会弹出三个选项的菜单. 程序托盘图标设置 我会用尽可能清晰明了的步骤介绍方式 ...

  4. [C#] 常用工具类——应用程序属性信息访问类

    using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespac ...

  5. 对类HelloWorld程序中添加一个MessageBox弹窗

    对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以 ...

  6. java--final 类在程序中的影响

    很多时候我都记不住也弄不太清楚final类在程序的中的作用到底为何,今天正好看到了,就把它记下来,省的以后忘了的时候到处找资料~ final修饰符对程序的影响总的来说有三点: (1)final可以修饰 ...

  7. qt5.5实现 记事本程序

    最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...

  8. vs调试程序时发现变量、类等程序找不到混乱问题

    vs中不能同时打开两个解决方案名称相同的程序,否则会运行时出现混乱,比如变量监测不到,类的属性不全等问题

  9. Application类-应用程序生命周期

    1.创建Application对象 新建WPF程序后,排除掉WPF自动创建的App.xaml,我们自定义一个类,在该类的Main()方法中,创建Application对象,然后调用创建一个窗口对象,最 ...

随机推荐

  1. 如何获取网页验证码图片并保存到本地(Java实现) [问题点数:40分,结帖人lanxuezaipiao]

    http://bbs.csdn.net/topics/390426978 public static String readCheckImage(HashMap<String, String&g ...

  2. hdu_2089_不要62(数位DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:中文,不解释 题解:dp[i][j]表示当前第i位的前一个数为j,然后记忆化dfs,注意的 ...

  3. ASP.NET MVC 使用TempData

    ASP.NET MVC的TempData用于传输一些临时的数据,例如在各个控制器Action间传递临时的数据或者给View传递一些临时的数据,相信大家都看过"在ASP.NET页面间传值的方法 ...

  4. js调用函数的格式

    如题 onclick='alert(\""+"&#1"+"\")' onclick='alert(encodeURIComponen ...

  5. Android得到视频缩略图

    视频缩略图,可以通过接口类 MediaMetadataRetriever 来实现 具体可以看代码片段 public Bitmap getVideoThumbnail(String filePath) ...

  6. centos7配置ip

    vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 ONBOOT=yes 重启ip服务 systemctl restart network.service 开 ...

  7. IOS传值之Block传值(二)

    @interface QWViewController : UIViewController @property(nonatomic,strong)UILabel *label; @property( ...

  8. profile和bash

    24down votefavorite 12 I am reading about basic shell scripting from Linux Command Line and Shell Sc ...

  9. Delphi XE2 生成的.exe 在未安装有Delphi的电脑上运行提示 “丢失 rtl160.bpl”

    解决方案: XE2中加入了多平台的概念,默认的Release模式,也是带包编译,带运行时库的,所以,需要手工设置一下工程选项: 打开工程以后,Project-->Options-->左侧树 ...

  10. web服务器小记

    服务器分web服务器,应用程序服务器以及HTTP服务器,此处只解释web服务器,详情: http://www.cnblogs.com/zhaoyl/archive/2012/10/10/2718575 ...