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 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Qt之QMessageBox的具体使用

《Qt之QMessageBox的具体使用》本文介绍Qt中QMessageBox类的使用,用于弹出提示、警告、错误等模态对话框,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.简单介绍3.常见函数4.按钮类型(QMessage::StandardButton)5.分步骤实现弹窗6.总结1.引言

Qt中Qfile类的使用

《Qt中Qfile类的使用》很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件,本文主要介绍了Qt中Qfile类的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.QFile文件操作3.演示示例3.1实验一3.2实验二【演示 QFile 读写二进制文件的过程】4.