Qt程序窗口关闭不退出而最小化到托盘的方法
一、描述
为避免错点关闭按钮,使得软件关闭退出。需要开发一种类似于QQ桌面之类的功能,点击关闭按钮并不退出,开发的应用程序在用户鼠标点击右上角的关闭按钮时,程序不退出,缩小到右下角,进入托盘。例如win10右下角的图标。
二、思路
1、需要对应用软件程序窗口的关闭按钮进行事件拦截,然后重载,用到QT的QDesktopServices类。
2、要使程序进入托盘,需要用到QT的QSystemTrayIcon类。
三、方法
1、添加头文件和成员
mainwindow.h 头文件中添加:#include <QSystemTrayIcon> //t托盘类#include <QDesktopServices> //桌面事件类private: QMenu *trayMenu;//托盘菜单QSystemTrayIcon *tray;//托盘图标添加成员
2、构造函数初始化
//***托盘***tray= new QSystemTrayIcon(this);//初始化托盘对象traytray->setIcon(QIcon(QPixmap(":/image/image/icon_48px.png")));//设定托盘图标,引号内是自定义的png图片路径tray->setToolTip("My helper"); //提示文字QString title="APP Message";QString text="My helper start up";tray->show();//让托盘图标显示在系统托盘上tray->showMessage(title,text,QSystemTrayIcon::Information,3000); //最后一个参数为提示时长,默认10000,即10s//创建菜单项动作minimizeAction = new QAction("MinWin", this);connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide())); maximizeAction = new QAction("MaxWin", this);connect(maximizeAction, SIGNAL(triggered()), this, SLOT(showMaximized()))restoreAction = new QAction("restore", this);connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));quitAction = new QAction("exit", this);connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); //关闭应用//创建托盘菜单trayMenu = new QMenu(this);trayMenu->addAction(minimizeAction);trayMenu->addAction(maximizeAction);trayMenu->addAction(restoreAction);trayMenu->addSeparator();trayMenu->addAction(quitAction);tray->setContextMenu(trayMenu);connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
3、添加槽函数
void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason ireason)
{switch (ireason){case QSystemTrayIcon::Trigger:this->showNormal();break;case QSystemTrayIcon::DoubleClick:this->showNormal();break;case QSystemTrayIcon::MiddleClick:break;default:break;}
}
4、拦截桌面窗口事件
void MainWindow::closeEvent(QCloseEvent *event)
{if(tray->isVisible()){hide(); //隐藏窗口event->ignore(); //忽略事件}
}
void MainWindow::hideEvent(QHideEvent *event)
{if(tray->isVisible()){hide(); //隐藏窗口event->ignore(); //忽略事件}
}
Qt程序窗口关闭不退出而最小化到托盘的方法相关推荐
- Python对Windows程序窗口操作:最大化、最小化、关闭
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 代码 补充 前言 Python对Windows程序窗口操作 最大化 最小化 关闭 代码 import win32con ...
- C# 窗口最小化到托盘及右键图标显示菜单
日常开发有时候需要实现窗口最小化到系统托盘,本文就来讲讲该如何实现winfrom最小化到系统托盘,本例子基于VS2019编写. 用C#开发winform桌面程序时,程序启动后,默认是显示在桌面而且在任 ...
- qt 最小化到托盘linux,Qt窗口最小化到托盘,托盘菜单控制
作为Qt初学者,最近在编写窗口最小化到托盘功能代码的时候遇到了点阻碍. Qt自带的demo实现的功能太过繁琐,涉及知识点又太杂,很难理出最核心的思路.网上的文章代码也很多脱骨于这个demo,注释说明太 ...
- Qt中如何使窗口隐藏/最小化到托盘
Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘... 功能:窗口最小化后或者点击"hide"按钮将窗口隐藏到托盘. 通常最小化的窗口会在任 ...
- Qt捕捉窗口关闭事件
Qt捕捉窗口关闭事件 有时候我们希望在关闭窗口之前做一些操作,例如保存缓存数据或向用户提示是否关闭窗口等等. 由于一般的窗口都是继承自QWidget, 那么我们可以通过覆盖QWidget中的虚函数cl ...
- Qt关于窗口关闭触发函数/信号
方法一. 窗口右上角的X按键会导致其在不给出任何提示的情况下直接退出, 当点击右上角的x按键时,会触发Qt中的一个事件处理函数:void QWidget::closeEvent ( QCloseEve ...
- PyQt5 技术篇-QWidget、QDialog程序窗口关闭closeEvent()触发事件方法重写
我用 QWidget 来做个示例,它在程序窗口关闭时会触发 closeEvent() 事件,我们把它重写后就能实现关闭窗口时触发我们想要的效果. 重点就两个,如下所示: 重点一: 重写组件的 clos ...
- pyqt5 最小化 系统托盘_Qt中如何使窗口隐藏/最小化到托盘
展开全部 功能62616964757a686964616fe78988e69d8331333361303733:窗口最小化后或者点击"hide"按钮将窗口隐藏到托盘. 通常最小化的 ...
- 【pyqt5学习】——窗口最小化至托盘、取消任务栏图标
目录 1.最小化至托盘 1)重写系统托盘类,设置托盘图标等属性 2)将具体的窗口放入托盘 2.取消任务栏界面图标 3.问题汇总 1)退出后托盘图标还是存在,没有消失 2)最小化后左下角会出现 窗口 3 ...
最新文章
- 《设计模式 系列》- 面向对象六大原则
- ansible的安装和使用
- VS2012+WDK8.0搭建WDF驱动开发环境
- 成功解决AttributeError: module tensorflow.image has no attribute resize
- 基于Windows Socket 的网络通信中的心跳机制原理
- [vue] vue中怎么重置data?
- Android mock for循环,Android单元测试(五):依赖注入,将mock方便的用起来
- 【C语言】实参求值的顺序
- 软件项目质量管理经验谈
- MySQl中文1001无标题_Mysql中字段类型不一致导致索引无效的处理办法
- 流水线机制、滑动窗口协议、GBN、SR
- mac系统linux不能ping外网,Mac上配置Linux网络适配器(NAT模式),无法ping通
- 计算机软件著作权登记证书
- jQuery插件使用-瀑布流
- 云杰恒指:7.29恒指期货实盘指导交易复盘
- 多伦多大学计算机专音乐专业,多伦多大学音乐理论专业介绍
- html table的边框线怎么变圆角_CSS如何设置html table表格边框样式
- 从诱发反应中解码动态脑模式:应用于时间序列神经成像数据的多元模式分析教程
- opencv(c++)------图像分割(阙值、自适应阙值、grabCut、floodfill、wathershed)
- ubuntu 17\18.04 调节鼠标指针速度
热门文章
- 学习程序开发的方法,仅供参考吧
- Linux 文件区块连续吗,关于Linux文件系统的的简单理解和认识
- 安装oculus运行时出现问题_U盘安装windows10出现的问题解决方法
- 辽宁大学计算机专业接收调剂,目前有计算机专业调剂通知的学校,不断更新—3月26日更新,新增辽宁大学等...
- java全局异常处理_详解Spring全局异常处理的三种方式
- php 显示变量类型
- 【电路补习笔记】10、电感式开关电源(BUCK 降压电路)
- MSP432P401R TI Drivers 库函数学习笔记(七)I2C驱动OLED屏幕
- MSP432P401R TI Drivers 库函数学习笔记(三)认识任务的创建及图形化配置
- SHELL test [ 命令用法