Qt实现最小化窗口到托盘图标

前言:

使用QT开发桌面软件,将软件最小化至托盘这样的功能的是比较常见的,今天自己实现一下这个功能,并进行记录总结。

1.先看效果图

在这里插入图片描述
主要功能就是当软件开始运行,在系统托盘会自动出现一个关于本软件的系统托盘的图标,你右击这个图标,可以弹出一个菜单栏,这样的效果

2.大致思路以及实现流程

首先Qt本身就有一个系统托盘的类, QSystemTrayIcon类。

所以第一步:创建该类的对象,为该对象设置图标,然后show出来,托盘图标就能显示了。

第二步:要想右击的时候糖醋一个菜单栏,需要调用QSystemTrayIcon类的**setContextMenu()**函数,此时需要添加一个菜单栏就行了。

所以接下来看具体代码。

3.具体代码以及解释

需要加头文件

#include "qsystemtrayicon.h"
#include<qmenu.h>

.h文件中创建相应的对象:

 QMenu* m_pTrayMennu;            //系统托盘右键菜单项
 QSystemTrayIcon* m_pSystemTray; //系统托盘图标 
 
 //右键菜单栏选项           
 QAction* m_pActionShow;
 QAction* m_pActionHide;
 QAction* m_pActionModel;
 QAction* m_pActionSetting;
 QAction* m_pActionQuit;

.cpp文件:

void CDesktopPet::CreatSystemTray()
{
    //创建菜单对象和托盘图标对象
    m_pTrayMennu = new CTrayMenu(this);
    m_pSystemTray = new QSystemTrayIcon(this);
 
    //创建菜单项
	m_pActionShow = new QAction(tr("Show pet"), this);
	m_pActionHide = new QAction(tr("Hide pet"), this);
	m_pActionModel = new QAction(tr("Model selecte"), this);
	m_pActionSetting = new QAction(tr("Setting"), this);
	m_pActionQuit = new QAction(tr("Exit"), this);
 
	//添加菜单项
	m_pTrayMennu->addAction(m_pActionShow);
	m_pTrayMennu->addAction(m_pActionHide);
	m_pTrayMennu->addAction(m_pActionModel);
	m_pTrayMennu->addAction(m_pActionSetting);
	m_pTrayMennu->addSeparator();
	m_pTrayMennu->addAction(m_pActionQuit);
    
    //为系统托盘设置菜单为m_pTrayMennu
    m_pSystemTray->setContextMenu(m_pTrayMennu);
    m_pSystemTray->setIcon(QIcon(":/CDesktopPet/Resource/image/trayIcon.png"));
 
    m_pSystemTray->show();
}

这是全部代码,需要注意的是最后三句代码:

  1. m_pSystemTray->setContextMenu(m_pTrayMennu);系统托盘类对象设置上下文菜单为(m_pTrayMennu);

  2. m_pSystemTray->setIcon(QIcon(“:/CDesktopPet/Resource/image/trayIcon.png”));系统托盘类对象对象设置图标,这个必须有,不设置图标是显示不出来的。

  3. m_pSystemTray->show();显示系统托盘类对象。

在新建项目的界面类的构造函数里调用CreatSystemTray()函数,就可以了!

如果还想把任务栏的系统图标给隐藏掉,可以加上这句:

setWindowFlags(Qt::Tool);

4.总结

该功能实现起来还是比较简单,其实还有很多后续工作需要继续完善,比如点击了退出菜单项,将程序退出;这个实现需要添加槽函数,来接受右键菜单项的信号,在相应的槽函数中直接调用退出函数QApplication::exit(0);即可,在此小小记录一下。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值