失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【Qt开发】实现系统托盘 托盘菜单 托盘消息

【Qt开发】实现系统托盘 托盘菜单 托盘消息

时间:2022-10-25 21:49:18

相关推荐

【Qt开发】实现系统托盘 托盘菜单 托盘消息

概述

系统托盘就是在系统桌面底部特定的区域显示运行的程序。windows在任务栏状态区域,linux在布告栏区域。应用程序系统托盘功能,是比较普遍的功能,本篇将详细的介绍如何实现该功能。

演示Demo实现功能:

1.应用启动后,任务栏,系统托盘可以看到该程序。

2.点击右上角×关闭窗口,自动隐藏窗口,托盘可以看到该程序。

3.鼠标在托盘图标上右键,弹出"退出程序"菜单栏,并带有图标。

步骤:

1.工程中新建TrayDialog类,基类是QDialog,在界面上添加Text Browser控件和提示信息。

2.在TrayDialog.h头文件中添加#include <QtWidgets>包含文件

3.添加成员变量

QSystemTrayIcon m_systray,

信号槽响应函数

int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);

int OnExit();

重写closeEvent(QCloseEvent *event)函数,完整代码如下:

#pragma once#pragma execution_character_set("utf-8")#include <QDialog>#include <QtWidgets>#include "ui_TrayDialog.h"class TrayDialog : public QDialog{Q_OBJECTpublic:TrayDialog(QWidget *parent = Q_NULLPTR);~TrayDialog();private:void closeEvent(QCloseEvent *event);private slots:int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);int OnExit();private:Ui::TrayDialog ui;QSystemTrayIcon m_systray;};

4.在Qt Designer中添加Action,用于托盘右键退出程序。

5.构造函数TrayDialog(QWidget *parent)中添加如下代码:

//设置提示文字m_systray.setToolTip("系统托盘演示程序");// 设置托盘图标m_systray.setIcon(QIcon(":/qtlearn/Resources/EXE.ico"));//托盘菜单项QMenu * menu = new QMenu();menu->addAction(ui.actionExit);m_systray.setContextMenu(menu);// 关联托盘事件connect(&m_systray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this, SLOT(OnSystemTrayClicked(QSystemTrayIcon::ActivationReason)));//显示托盘m_systray.show();//托盘菜单响应connect(ui.actionExit, SIGNAL(triggered()), this, SLOT(OnExit()));

6.关闭窗口事件响应函数

/************************************@ Brief: 点击关闭窗口@ Author: woniu201 @ Created: /03/21@ Return: ************************************/void TrayDialog::closeEvent(QCloseEvent *event){this->hide();event->ignore();}

7.双击/单击托盘应用程序响应函数

/************************************@ Brief: 双击/单击托盘事件@ Author: woniu201@ Created: /03/21@ Return:************************************/int TrayDialog::OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason){if (reason == QSystemTrayIcon::Trigger|| reason == QSystemTrayIcon::DoubleClick){// 显示主窗口this->showNormal();}return 0;}

8.托盘右键退出响应函数

/************************************@ Brief: 托盘菜单退出@ Author: woniu201 @ Created: /03/21@ Return: ************************************/int TrayDialog::OnExit(){QApplication::exit(0);return 0;}

9.启动后效果如下

如果觉得《【Qt开发】实现系统托盘 托盘菜单 托盘消息》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。