1.简介
QSystemTrayIcon是Qt中的一个类,用于创建和管理系统托盘图标。系统托盘图标是显示在操作系统任务栏或通知区域的小图标,它可以用来在后台运行的应用程序中提供快速访问功能。
2.常用方法
设置托盘的显示图标
- setIcon(const QIcon &icon)
设置托盘图标的提示文本,鼠标悬停在图标上时会显示。
- setToolTip(const QString &tip)
设置右键菜单
- setContextMenu(QMenu *menu)
控制托盘图标的显示与隐藏
- setVisible(bool visible)
响应用户操作:可以使用activated()信号来捕捉用户对托盘图标的操作,如单击、双击、右键等,通过检查QSystemTrayIcon::ActivationReason来确定具体的操作类型。
3.示例
做一个跟微信一样的托盘菜单。
以下是主界面,右上角两个按钮,一个最小化,一个隐藏 。
点击隐藏,双击托盘显示界面。
#include "widget.h"
#include "ui_widget.h"
static QSystemTrayIcon *g_trayIcon = nullptr;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowFlag(Qt::FramelessWindowHint);
g_trayIcon = new QSystemTrayIcon();
// 设置提示语
g_trayIcon->setToolTip("这是系统系统图标");
// 设置图标
g_trayIcon->setIcon(QIcon(":/img/LOGO.png"));
// 增加托盘菜单
QMenu *menu = new QMenu();
QAction *a1 = new QAction("设置");
QAction *a2 = new QAction("意见反馈");
QAction *a3 = new QAction("帮助");
QAction *a4 = new QAction("关于app");
QAction *a5 = new QAction("退出");
menu->addAction(a1);
menu->addAction(a2);
menu->addAction(a3);
menu->addAction(a4);
menu->addAction(a5);
g_trayIcon->setContextMenu(menu);
connect(a1,SIGNAL(triggered(bool)),this,SLOT(on_active1(bool)));
connect(a2,SIGNAL(triggered(bool)),this,SLOT(on_active2(bool)));
connect(a3,SIGNAL(triggered(bool)),this,SLOT(on_active3(bool)));
connect(a4,SIGNAL(triggered(bool)),this,SLOT(on_active4(bool)));
connect(a5,SIGNAL(triggered(bool)),this,SLOT(on_active5(bool)));
// 关联拖盘事件
connect(g_trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(on_activated(QSystemTrayIcon::ActivationReason)));
//
g_trayIcon->show();
// 要在show之后调用
g_trayIcon->showMessage("showMessage","系统托盘提示",QSystemTrayIcon::MessageIcon::Information,500);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_activated(QSystemTrayIcon::ActivationReason action)
{
if(action==QSystemTrayIcon::ActivationReason::DoubleClick){
//双击复原
showNormal();
}
else{
return;
}
}
void Widget::on_active1(bool b)
{
qDebug()<<"这是设置";
}
void Widget::on_active2(bool b)
{
qDebug()<<"这是意见反馈";
}
void Widget::on_active3(bool b)
{
qDebug()<<"这是帮助";
}
void Widget::on_active4(bool b)
{
qDebug()<<"这是关于app";
}
void Widget::on_active5(bool b)
{
qDebug()<<"这是退出";
QApplication::exit();
}
void Widget::on_btnClose_clicked()
{
this->hide();
}
void Widget::on_btnMin_clicked()
{
showMinimized();
}
4.完整工程
https://download.csdn.net/download/wzz953200463/88496030