当前位置: 首页 > news >正文

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();}
纯真丁一郎的博客:有时间就要学习
http://www.lryc.cn/news/322197.html

相关文章:

  • arm地址对齐的总结
  • 就业班 2401--3.13 走进网络
  • SWIFT介绍和学习(简单入门级别)
  • 智慧城市:提升城市治理能力的关键
  • golang 对接第三方接口 RSA 做签(加密) 验签(解密)
  • Spring Data访问Elasticsearch----Elasticsearch存储库Repositories
  • 初探 Cocos Creator: 碰撞与物理系统
  • Vue组件封装方案对比——v-if方式与内置component方式
  • python与excel第四节 批量新增、删除工作表
  • 计算机网络——计算机网络体系结构
  • 近期常用linux命令总结
  • 变配电站配电监控解决方案--变电站综合自动化系统
  • 【ollama】linux、window系统更改模型存放位置,全网首发2024!
  • Spring 被打暴了! vs Javalin vs Solon
  • IDEA中快速配置Git
  • vscode用SSH远程开发c语言
  • 鸿蒙Next 支持数据双向绑定的组件:Checkbox--Search--TextInput
  • 跨越时空的纽带:探索Facebook如何连接人与人
  • LabVIEW湍流等离子体束热效率优化
  • 21个 JVM 技术点详解(附面试解答)
  • mysql逗号分隔字段拆成行简述
  • 最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载
  • golang 操作redis
  • macOS - 获取硬件设备信息
  • 突破编程_C++_STL教程( queue 的基础知识)
  • Hystrix 容错机制数据监控可视界面无法加载
  • 【Java】POI解析excel
  • AI浸入社交领域,泛娱乐APP如何抓住新风口?
  • 遥感图像地物分类流程
  • JS13-事件的绑定和事件对象Event