Qt实现最小化窗口到托盘图标

这篇具有很好参考价值的文章主要介绍了Qt实现最小化窗口到托盘图标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

1.先看效果图

2.大致思路以及实现流程

3.具体代码以及解释

4.总结


前言:

使用QT开发桌面软件,将软件最小化至托盘这样的功能的是比较常见的,今天自己实现一下这个功能,并进行记录总结。

1.先看效果图

Qt实现最小化窗口到托盘图标

 主要功能就是当软件开始运行,在系统托盘会自动出现一个关于本软件的系统托盘的图标,你右击这个图标,可以弹出一个菜单栏,这样的效果

2.大致思路以及实现流程

首先Qt本身就有一个系统托盘的类, QSystemTrayIcon类。

所以第一步:创建该类的对象,为该对象设置图标,然后show出来,托盘图标就能显示了。

第二步:要想右击的时候糖醋一个菜单栏,需要调用QSystemTrayIcon类的setContextMenu()函数,此时需要添加一个菜单栏就行了。

所以接下来看具体代码。

3.具体代码以及解释

需要加头文件

#include "qsystemtrayicon.h"
#include<qmenu.h>

.h文件中创建相应的对象:

 QMenu* m_pTrayMennu;            //系统托盘右键菜单项
 QSystemTrayIcon* m_pSystemTray; //系统托盘图标 
 
 //右键菜单栏选项           
 QAction* m_pActionShow;
 QAction* m_pActionHide;
 QAction* m_pActionModel;
 QAction* m_pActionSetting;
 QAction* m_pActionQuit;

.cpp文件:

void CDesktopPet::CreatSystemTray()
{
    //创建菜单对象和托盘图标对象
    m_pTrayMennu = new CTrayMenu(this);
    m_pSystemTray = new QSystemTrayIcon(this);

    //创建菜单项
	m_pActionShow = new QAction(tr("Show pet"), this);
	m_pActionHide = new QAction(tr("Hide pet"), this);
	m_pActionModel = new QAction(tr("Model selecte"), this);
	m_pActionSetting = new QAction(tr("Setting"), this);
	m_pActionQuit = new QAction(tr("Exit"), this);

	//添加菜单项
	m_pTrayMennu->addAction(m_pActionShow);
	m_pTrayMennu->addAction(m_pActionHide);
	m_pTrayMennu->addAction(m_pActionModel);
	m_pTrayMennu->addAction(m_pActionSetting);
	m_pTrayMennu->addSeparator();
	m_pTrayMennu->addAction(m_pActionQuit);
    
    //为系统托盘设置菜单为m_pTrayMennu
    m_pSystemTray->setContextMenu(m_pTrayMennu);
    m_pSystemTray->setIcon(QIcon(":/CDesktopPet/Resource/image/trayIcon.png"));

    m_pSystemTray->show();
}
    

这是全部代码,需要注意的是最后三句代码:

1. m_pSystemTray->setContextMenu(m_pTrayMennu);系统托盘类对象设置上下文菜单为(m_pTrayMennu);

2. m_pSystemTray->setIcon(QIcon(":/CDesktopPet/Resource/image/trayIcon.png"));系统托盘类对象对象设置图标,这个必须有,不设置图标是显示不出来的。

3. m_pSystemTray->show();显示系统托盘类对象。

在新建项目的界面类的构造函数里调用CreatSystemTray()函数,就可以了!

如果还想把任务栏的系统图标给隐藏掉,可以加上这句:

setWindowFlags(Qt::Tool);

4.总结

该功能实现起来还是比较简单,其实还有很多后续工作需要继续完善,比如点击了退出菜单项,将程序退出;这个实现需要添加槽函数,来接受右键菜单项的信号,在相应的槽函数中直接调用退出函数QApplication::exit(0);即可,在此小小记录一下。文章来源地址https://www.toymoban.com/news/detail-402725.html

到了这里,关于Qt实现最小化窗口到托盘图标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从0到1,手把手带你开发截图工具ScreenCap------003实现最小化程序到托盘运行

    为了方便截图干净,实现最小化程序到托盘运行,简洁,勿扰 实现最小化程序到托盘运行 实现托盘菜单功能 实现回显主窗体 实现托盘开始截屏 实现气泡信息提示 实现托盘程序提示 实现托盘退出程序 封装完好,可复用 注:博主所有资源永久免费,若有帮助,请点赞转发是

    2024年02月05日
    浏览(53)
  • 【Qt UI相关】Qt中如何控制 窗口的最大化、最小化和关闭按钮?一文带你掌握用法

    窗口的最大化、最小化和关闭按钮通常是由操作系统的窗口管理器控制的,而不是由应用程序控制的。这些按钮的行为(例如点击最大化按钮会将窗口的大小调整为屏幕的大小)是由窗口管理器实现的,应用程序通常不能改变这些行为。 在 Qt 中,你可以通过 QWidget::setWindow

    2024年02月11日
    浏览(42)
  • 捕获最小化窗口的缩略图画面

    : capture minimized window window thumbnail IsIconic  最小化的窗口,API GetClientRect 返回的窗口尺寸是0x0,故无法通过GetDC+BitBlt捕获到窗口画面。 但是 Agora/zoom/tencentMeeting 都可以拿到最小化窗口的缩略图。经确认这个程序并没有注入任何dll到目标窗口,且也没有临时显示最小化了

    2024年02月07日
    浏览(50)
  • 第二章 Electron自定义界面(最大化、最小化、关闭、图标等等)

    Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发经验(这段话是来自官网)。 这里我已经搭建好了项目 👉👉👉 快

    2024年02月05日
    浏览(54)
  • Python中最全的窗口操作,如窗口最大化、最小化、窗口置顶、获取缩放比例等

    本文记录在Python中操作 Windows 应用窗口的操作。 这里的操作都是自己摸索+借助强大的搜索引擎整理出来的,我真棒!!! 名称 解释名称 ctypes Python 的外部函数库。它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。 pywin32 是Win32(PYWIN32)扩展的 Python 的ream

    2024年01月16日
    浏览(38)
  • win10/win11程序窗口最小化后, 点击任务栏无法弹出的问题处理

    在本人使用win10、win11系统时,有时打开某个程序的多个窗口,最小化该程序窗口后,长时间不对该窗口做任何操作。 在较长时间后,点击任务栏,发现无法弹出该程序窗口,但是在任务栏上 右键 点击该窗口图标,选择 关闭窗口 可以正常关闭该窗口,说明程序未卡死、 这种

    2024年02月16日
    浏览(58)
  • 关于Windows桌面远程后,unity程序无法全屏显示或者显示窗口默认最小化解决方法

    按以下步骤操作 1、Win+R打开运行,然后输入regedit打开注册表 2、根据计算机HKEY_CURRENT_USERSoftwareDefaultCompany路径找到DefaultCompany的文件夹 3、在DefaultCompany文件夹下找到unity打包时exe文件对应名称的文件夹,右键删除整个文件夹,删除后再去启动unity.exe程序即可恢复正常显示画

    2024年04月10日
    浏览(81)
  • 机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

    训练集是有N个独立同分布的样本组成,即每个样本(x,y)是独立的从相同的分布中抽取的。这个真实的分布未知 输入空间X和输出空间Y构成样本空间,对于样本空间中的样本(x, y)∈X x Y,假定x和y之间可通过一个未知的真实隐射y=g(x)来描述,或者通过真实条件概率分布来描述。

    2024年02月09日
    浏览(53)
  • C# winform窗体UI美化后实现最大化、最小化、还原、关闭、窗体移动等等-2023/1/11

    在做winform窗体UI美化时,一般都需要将窗体的FormBorderStyle属性设为None,之后窗体就会没有最上面的标题栏,然后按照UI进行界面的设计。美化的代价就是窗体本来标题栏的相关操作,例如双击自动最大化,再次双击又恢复正常大小,以及上窗体关闭、最小化等功能就都需要自

    2024年02月08日
    浏览(55)
  • DFA的最小化

    一、实验目的 1.熟练掌握DFA与NFA的定义与有关概念。 2.理解并掌握确定的有穷自动机的最小化等算法。 二、实验要求 输入:DFA 输出:最小化的DFA 三、实验过程 1.化简DFA关键在于把它的状态集分成一些两两互不相交的子集,使得任何两个不相交的子集间的状态都是可区分

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包