linux qt 托盘程序,【Qt开发】实现系统托盘,托盘菜单,托盘消息

概述

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

演示Demo实现功能:

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

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

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

步骤:

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

967ebd3bde53607073015cf7bdfa4799.png

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

3.添加成员变量

QSystemTrayIcon m_systray,

信号槽响应函数

int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);

int OnExit();

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

#pragma once

#pragma execution_character_set("utf-8")#include#include#include"ui_TrayDialog.h"

class TrayDialog : publicQDialog

{

Q_OBJECTpublic:

TrayDialog(QWidget*parent =Q_NULLPTR);~TrayDialog();private:void closeEvent(QCloseEvent *event);privateslots:intOnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);intOnExit();private:

Ui::TrayDialog ui;

QSystemTrayIcon m_systray;

};

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

999e7f6544dc144cddbc6d15cb83928e.png

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

//设置提示文字

m_systray.setToolTip("系统托盘演示程序");//设置托盘图标

m_systray.setIcon(QIcon(":/qtlearn/Resources/EXE.ico"));//托盘菜单项

QMenu * menu = newQMenu();

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: 2019/03/21

@ Return:

************************************/

void TrayDialog::closeEvent(QCloseEvent *event)

{this->hide();event->ignore();

}

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

/************************************

@ Brief: 双击/单击托盘事件

@ Author: woniu201

@ Created: 2019/03/21

@ Return:

************************************/

intTrayDialog::OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason)

{if (reason ==QSystemTrayIcon::Trigger|| reason ==QSystemTrayIcon::DoubleClick)

{//显示主窗口

this->showNormal();

}return 0;

}

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

/************************************

@ Brief: 托盘菜单退出

@ Author: woniu201

@ Created: 2019/03/21

@ Return:

************************************/

intTrayDialog::OnExit()

{

QApplication::exit(0);return 0;

}

9.启动后效果如下

12a665a93c0c904a69f498824c0ffc6c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值