QT----给程序添加上任务栏托盘图标和退出

2024-03-21 07:28

本文主要是介绍QT----给程序添加上任务栏托盘图标和退出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

让我们的程序拥有任务栏托盘图标,实现程序后台运行,退出等功能

1、关闭程序保持后台

重写关闭事件,忽略点击窗口关闭

void MainWindow::closeEvent(QCloseEvent *event)
{// 隐藏窗口,而不是真正关闭setVisible(false);// 忽略关闭事件,阻止窗口真正关闭event->ignore();
}

2、添加任务栏托盘图标

在这里插入图片描述
创建一个任务链托盘图标,添加上退出和显示的菜单按钮,定义显示的槽函数

// 创建系统托盘图标对象QSystemTrayIcon* pSystemTray = new QSystemTrayIcon(&w);// 判断系统托盘图标是否创建成功if (NULL != pSystemTray) {// 设置托盘图标pSystemTray->setIcon(QIcon(":/res/totle.svg"));// 设置托盘图标的提示信息pSystemTray->setToolTip("别坐着了");// 显示托盘图标pSystemTray->show();}// ---------- 创建托盘菜单 ----------// 创建托盘菜单对象auto* trayMenu = new QMenu(&w);// 创建“显示面板”菜单项auto* showPanelAction = new QAction("显示面板", &w);// 连接菜单项的触发信号与主窗口的showPanel槽函数QObject::connect(showPanelAction,&QAction::triggered,&w,&MainWindow::showPanel);// 将菜单项添加到托盘菜单中trayMenu->addAction(showPanelAction);// 创建“退出”菜单项auto* quitAction = new QAction("退出",&w);// 连接菜单项的触发信号与 QApplication 的 quit() 槽函数QObject::connect(quitAction,&QAction::triggered,&w,&QApplication::quit);// 将菜单项添加到托盘菜单中trayMenu->addAction(quitAction);// 设置托盘图标的上下文菜单pSystemTray->setContextMenu(trayMenu);// 显示托盘图标pSystemTray->show();

完整代码

main。cpp

#include "mainwindow.h"
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
int main(int argc, char *argv[])
{// 创建 Qt 应用程序对象QApplication a(argc, argv);// 创建主窗口对象MainWindow w;// ---------- 设置任务栏托盘图标 ----------// 创建系统托盘图标对象QSystemTrayIcon* pSystemTray = new QSystemTrayIcon(&w);// 判断系统托盘图标是否创建成功if (NULL != pSystemTray) {// 设置托盘图标pSystemTray->setIcon(QIcon(":/res/totle.svg"));// 设置托盘图标的提示信息pSystemTray->setToolTip("别坐着了");// 显示托盘图标pSystemTray->show();}// ---------- 创建托盘菜单 ----------// 创建托盘菜单对象auto* trayMenu = new QMenu(&w);// 创建“显示面板”菜单项auto* showPanelAction = new QAction("显示面板", &w);// 连接菜单项的触发信号与主窗口的showPanel槽函数QObject::connect(showPanelAction,&QAction::triggered,&w,&MainWindow::showPanel);// 将菜单项添加到托盘菜单中trayMenu->addAction(showPanelAction);// 创建“退出”菜单项auto* quitAction = new QAction("退出",&w);// 连接菜单项的触发信号与 QApplication 的 quit() 槽函数QObject::connect(quitAction,&QAction::triggered,&w,&QApplication::quit);// 将菜单项添加到托盘菜单中trayMenu->addAction(quitAction);// 设置托盘图标的上下文菜单pSystemTray->setContextMenu(trayMenu);// 显示托盘图标pSystemTray->show();// 进入应用程序事件循环return a.exec();
}

mainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMessageBox>
#include <QMainWindow>
#include <QCloseEvent>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic slots:void showPanel();
public:MainWindow(QWidget *parent = nullptr);~MainWindow();void closeEvent(QCloseEvent *event);private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::closeEvent(QCloseEvent *event)
{// 隐藏窗口,而不是真正关闭setVisible(false);// 忽略关闭事件,阻止窗口真正关闭event->ignore();
}void MainWindow::showPanel()
{// 显示窗口this->show();// 将窗口置顶,确保其显示在最前面this->raise();}
纯真丁一郎的博客:有时间就要学习

这篇关于QT----给程序添加上任务栏托盘图标和退出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832080

相关文章

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台