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


    目录

    前言:

    1.先看效果图

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

    3.具体代码以及解释

    4.总结


    前言:

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

    1.先看效果图

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

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

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

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

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

    所以接下来看具体代码。

    3.具体代码以及解释

    需要加头文件

    1. #include "qsystemtrayicon.h"
    2. #include

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

    1. QMenu* m_pTrayMennu; //系统托盘右键菜单项
    2. QSystemTrayIcon* m_pSystemTray; //系统托盘图标
    3. //右键菜单栏选项
    4. QAction* m_pActionShow;
    5. QAction* m_pActionHide;
    6. QAction* m_pActionModel;
    7. QAction* m_pActionSetting;
    8. QAction* m_pActionQuit;

    .cpp文件:

    1. void CDesktopPet::CreatSystemTray()
    2. {
    3. //创建菜单对象和托盘图标对象
    4. m_pTrayMennu = new CTrayMenu(this);
    5. m_pSystemTray = new QSystemTrayIcon(this);
    6. //创建菜单项
    7. m_pActionShow = new QAction(tr("Show pet"), this);
    8. m_pActionHide = new QAction(tr("Hide pet"), this);
    9. m_pActionModel = new QAction(tr("Model selecte"), this);
    10. m_pActionSetting = new QAction(tr("Setting"), this);
    11. m_pActionQuit = new QAction(tr("Exit"), this);
    12. //添加菜单项
    13. m_pTrayMennu->addAction(m_pActionShow);
    14. m_pTrayMennu->addAction(m_pActionHide);
    15. m_pTrayMennu->addAction(m_pActionModel);
    16. m_pTrayMennu->addAction(m_pActionSetting);
    17. m_pTrayMennu->addSeparator();
    18. m_pTrayMennu->addAction(m_pActionQuit);
    19. //为系统托盘设置菜单为m_pTrayMennu
    20. m_pSystemTray->setContextMenu(m_pTrayMennu);
    21. m_pSystemTray->setIcon(QIcon(":/CDesktopPet/Resource/image/trayIcon.png"));
    22. m_pSystemTray->show();
    23. }

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

    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);即可,在此小小记录一下。

  • 相关阅读:
    06 RocketMQ - 分布式事务 源码分析
    行业资讯 | 深圳:BIM法定化,开历史之先河
    链式二叉树的基本操作(C语言实现)
    微信推送平台-测试号定制推送
    day14【代码随想录】有效字母的异位词、赎金信、两个数组的交集、两个数组的交集||
    基于SSM的校园服务平台管理系统设计与实现
    面试必问:MySQL死锁 是什么,如何解决?(史上最全)
    使用Docker构建、共享和运行WebAssembly应用程序
    基于Solidworks的三维光路结构示意图绘制实例演示
    网络安全笔记--SQL注入
  • 原文地址:https://blog.csdn.net/qq_40876689/article/details/126574245