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. hdu_2147_kiki's game(博弈)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2147 题意:给你一个矩阵,从右上走到左下,每次只能向左或向下或向斜下走一格,先走到最后一格的会输,问k ...

  2. debian上安装lua编辑器

    Debian服务器上安装lua 1)下载压缩包 wget http://www.lua.org/ftp/lua-5.1.4.tar.gz 2)解压文件 tar  zxvf lua-5.1.4.tar. ...

  3. find the greatest common divisor

    function gcd(a, b) return a else return gcd(b, a mod b)

  4. SpringSecurity自定义过滤器

    applicationContext-security.xml: <beans:beans xmlns="http://www.springframework.org/schema/s ...

  5. Ubuntu DNS bind9 配置

    下面的配置就是实现解析test.zp.com到不同的IP地址 安装dns server软件包$ apt-get install bind9 配置dns配置文件的路径在/etc/bind路径下面添加一个 ...

  6. php根据时间显示刚刚,几分钟前,今天,昨天的实现代码

    如果大家有更好的方案欢迎交流 function diffBetweenTwoDay($pastDay){ $timeC = time() - strtotime($pastDay); $dateC = ...

  7. Linux 配置VNC远程桌面

    X11 提供的 display manager 为 xdm ,而著名的 KDE 与 GNOME 也都有自己的 display manager 管理程序,分别是 kdm 与 gdm .你可以透过三者中任 ...

  8. iptables-1.4.19 移植到linux

    ------------------------------------------------------------------------------------------ https://g ...

  9. java中的类修饰符、成员变量修饰符、方法修饰符

    类修饰符:  public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fi ...

  10. liunx 平台下软件包管理

    RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行 ...