使用QSystemTrayIcon类可以实现托盘程序。在这里使用QMainWindow做实例:

mainwindow.h头文件

 #ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QSystemTrayIcon>
#include <QAction>
#include <QMenu>
#include <QCloseEvent> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); private:
void closeEvent(QCloseEvent * event); private:
Ui::MainWindow *ui; QSystemTrayIcon* systemIcon; //系统托盘
QAction* min; //最小化
QAction* max; //最大化
QAction* restore; //还原程序
QAction* quit; //退出程序
QMenu* menu; //托盘程序的右键目录
}; #endif // MAINWINDOW_H

mainwindow.cpp 源文件

 #include <QString>
#include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); QIcon icon(":/new/prefix1/images/icon.ico");
systemIcon = new QSystemTrayIcon(this); //托盘程序
systemIcon->setIcon(icon);
systemIcon->setToolTip(QString::fromLocal8Bit("测试托盘程序")); //连接托盘菜单功能到槽函数
min = new QAction(QString::fromLocal8Bit("最小化窗口"), this);
connect(min, SIGNAL(triggered()), this, SLOT(hide()));
max = new QAction(QString::fromLocal8Bit("最大化窗口"), this);
connect(max, SIGNAL(triggered()), this, SLOT(showMaximized()));
restore = new QAction(QString::fromLocal8Bit("还原窗口"), this);
connect(restore, SIGNAL(triggered()), this, SLOT(showNormal()));
quit = new QAction(QString::fromLocal8Bit("退出"), this);
connect(quit, SIGNAL(triggered()), qApp, SLOT(quit())); menu = new QMenu(this);
menu->addAction(min);
menu->addAction(max);
menu->addAction(restore);
menu->addSeparator();
menu->addAction(quit);
systemIcon->setContextMenu(menu); //设置托盘程序功能菜单
systemIcon->show();
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::closeEvent(QCloseEvent *event)
{
if(systemIcon->isVisible())
{
hide(); //隐藏主程序
systemIcon->showMessage(QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("测试程序正在后台运行!"));
event->ignore();
}
}

Qt托盘程序的更多相关文章

  1. Qt应用程序图标设置

    Qt应用程序图标设置 本文仅仅适用于windows下,linux等不适用. 下面说的图标,指的是程序文件的图标,而不是托盘图标或者说运行时任务栏的图标(任务栏和程序窗口的图标在windows/linu ...

  2. 报表控件NCReport教程:集成NCReport到Qt应用程序中

    NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...

  3. QT添加程序图标及窗口图标

    程序图标 材料准备 图标文件:*.ico文件,存放在源文件同一目录下,如"myapp.ico" 写入图标 向*.pro文件中,独立一行写入"RC_ICONS = *.ic ...

  4. delphi 托盘程序 转

    Delphi的托盘编程   .现在很多程序都用这个,比如傲游,迅雷等,主要代码如下: uses Windows, Messages, SysUtils, Variants, Classes, Grap ...

  5. Delphi 托盘程序实现 转

    unit MainUnit; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F ...

  6. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  7. Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)

    最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...

  8. 让你的 Qt 桌面程序看上去更加 native(一共六篇)

    <让你的 Qt 桌面程序看上去更加 native>是一个系列文章.在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native.这里,我假设你已经清楚如何使用 Qt 编 ...

  9. 让qt应用程序支持触摸

    一.设备驱动 我的触摸屏是usb接口的 可以参考下这2篇文件 http://blog.csdn.net/paomadi/article/details/8754783 usb触摸屏 http://bl ...

随机推荐

  1. Flutter - Finished with error: FormatException: Bad UTF-8 encoding 0xc3 (at offset 169)

    方案1: 更改项目的Encoding方式 File -> Settings -> Editor,  choose "File Encodings", change Pr ...

  2. 如何在ajax请求中设置特殊的RequestHeader

    现在ajax应用已经相当广泛了,有很多不错的ajax框架可供使用.ajax是一个异步请求,也主要是一种客户端的脚本行为.那么,如何在请求之前为请求添加特殊的一些头部信息呢? 下面是一个简单的例子,我用 ...

  3. 基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行

    一.版本迁移中的问题 1.游戏元素Sprite.Label.Action等等的创建函数名都改为create. 2.函数的回调callfunc_selectorcallfuncN_selectorcal ...

  4. IOS测试-Fastmonkey

    目录: 一.背景 二.Fastmonkey介绍 三.Fastmonkey操作前准备 四.Fastmonkey工程配置过程 五.执行Monkey测试 六.FAQ Fastmonkey实践 一.背景: 因 ...

  5. Python 之Memcache中间件

    一.引子 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载,它通过在内存中缓存数据和减少读取数据库的次数,从而提高动态数据库驱动网站的速度.Memcache ...

  6. 《杜增强讲Unity之Tanks坦克大战》6-发射子弹

    6 发射子弹 本节完成发射子弹的功能,最终代码如下:   image 首先,发射子弹得确定发射的位置和方向,还有发射的初始速度.具体的发射速度和按下发射按键的时间长短有关,这个关于子弹的蓄力我们在第九 ...

  7. JAVA之异常处理(一)

    JAVA之异常处理(一) 1.异常概述 在程序的开发过程中,可能存在各种各样的错误,有些错误是可以避免的,而有些错误却是意想不到的,在Java中把这些可能发生的错误称为异常.异常类的继承关系如下图. ...

  8. 下一个时代的发展架构竟然是它!FaaaaaaaaS到底是个啥?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云serverless团队发表于云+社区专栏 导读:2018年7月6 - 7日,一年一度的技术圈盛会ArchSummit全球架构师 ...

  9. linux磁盘扩容日志

    //针对ext4文件格式的操作系统(如CentOS6):// umount /dev/vdb e2fsck -f /dev/vdb resize2fs /dev/vdb mount /dev/vdb ...

  10. Python字典 (dict)

    作者博文地址:http://www.cnblogs.com/spiritman/ 字典是Python语言中唯一的映射类型.字典对象是可变的,它是一个容器类型,支持异构.任意嵌套. 创建字典 语法:{k ...