ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QT实现最小化到Icon单击双击显示窗口

2022-08-03 22:00:56  阅读:112  来源: 互联网

标签:QT 单击 trayIcon QAction trayMenu QSystemTrayIcon new 双击


最近在学习用QT开发一个项目,参考了网上的例子完成了一个QT实现最小化到Icon单击双击显示窗口的例子,分享给大家,也感谢大家的网络分享。项目会放在www.pavogroup.top上面,大家可以参考一下。

 

在头文件里面定义bool isIconExist;以避免重复创建多个icon。

void HelpDeskClientDialog::changeEvent(QEvent *event)

{
    if((event->type()==QEvent::WindowStateChange)&&isMinimized())
    {
        hide();
        event->ignore();
        //初始化两个项目
        QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);
        QAction* showAction = new QAction(QStringLiteral("Display Window"));//项1
        QAction* exitAction = new QAction(QStringLiteral("EXIT"));//项2
        //项1的点击槽函数
        connect(showAction, &QAction::triggered, this, [=]()
        {
            this->show();
        });
        //项2的点击槽函数
        connect(exitAction, &QAction::triggered, this, [=]()
        {
            qDebug()<<"exit";
            QApplication::exit(0);
        });
        connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason)));
        //初始化菜单并添加项
        QMenu* trayMenu = new QMenu(this);//菜单
        trayMenu->addAction(showAction);
        trayMenu->addAction(exitAction );
        //创建一个系统托盘
        if(isIconExist == true)
        {
            return;
        }
        else
        {
            trayIcon->setIcon(QIcon(":/Icon/bird2.png"));    //设置托盘图标
            trayIcon->setContextMenu(trayMenu);                                     //设置菜单
            trayIcon->setToolTip ("Super HelpDesk");
            trayIcon->show();
            isIconExist = true;
        }
    }
}

void HelpDeskClientDialog::on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason)
{
    switch(reason)
    {
        case QSystemTrayIcon::Trigger:
            //单击托盘图标
            this->showNormal();
            break;
        case QSystemTrayIcon::DoubleClick:
            //双击托盘图标
            //双击后显示主程序窗口
            this->showNormal();
            break;
        default:
            break;
    }
}

标签:QT,单击,trayIcon,QAction,trayMenu,QSystemTrayIcon,new,双击
来源: https://www.cnblogs.com/managechina/p/16548845.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有