zoukankan      html  css  js  c++  java
  • 【linux】【qt5界面】【系统托盘图标的实现】

    前言:

      博主最近在做一个聊天软件,虽然技术不咋滴,但遇到点干货肯定是要跟大家分享的啦。下面就给大家分享一个qt实现程序隐藏才系统托盘的技巧。

    装备:

      系统:linux,

      qt版本:5.9.2,GCC:4.9.3.

    1.头文件声明:

          QSystemTrayIcon *mSysTrayIcon;  //记得头文件

          void on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason);//槽函数的声明

    2.窗口初始化时创建托盘对象:

      //新建QSystemTrayIcon对象
      mSysTrayIcon = new QSystemTrayIcon(this);
          //新建托盘要显示的icon
          QIcon icon = QIcon(":/new/images/im_icon.png");
          //将icon设到QSystemTrayIcon对象中
          mSysTrayIcon->setIcon(icon);
          //当鼠标移动到托盘上的图标时,会显示此处设置的内容
          mSysTrayIcon->setToolTip(QObject::trUtf8("xxx客户端"));
          //给QSystemTrayIcon添加槽函数
          connect(mSysTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason)));
          //在系统托盘显示此对象
          mSysTrayIcon->show();

    3.槽函数实现点击事件。

      //系统托盘功能
      void ocswk::on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason)
      {
          switch(reason){
          case QSystemTrayIcon::Trigger:
              //单击托盘图标,显示窗体
              this->show();
              break;
          case QSystemTrayIcon::DoubleClick:
              //双击托盘图标
              //双击后显示主程序窗口
              QMessageBox::information(this,"xxx", "xxxxxx");
              break;
          default://还有个右键事件没写。
              break;
        }
    }

    4.体现图标作用:决定是否退出程序或缩小图标

    // closeEvents
    void ocswk::closeEvent(QCloseEvent *event)
    {
        QMessageBox button(QMessageBox::Warning, QString(tr("退出程序")),QString(tr("确认退出程序!")));
        button.setStandardButtons (QMessageBox::Yes|QMessageBox::No);
        button.setSizeIncrement(250,120);
        button.setButtonText (QMessageBox::Yes,QString("确定退出"));
        button.setButtonText (QMessageBox::No,QString("缩小托盘"));

        if(button.exec() != QMessageBox::Yes)
        {
            this->hide();
            event->ignore();
        }else{
            event->accept();
        }

    }

    5.图标抖动:来消息图标抖动事件还没完成(其实俺也不会啊),等后续更新吧。

  • 相关阅读:
    magento 去掉index.php
    TCP三次握手与四次挥手
    <Jper和Iperf>的安装及使用
    【Python】安装方法小结
    【ubuntu】日常网络配置信息的查看及修改
    DNS解析
    【Dig工具】
    【ping/tracert】的简单使用
    【VMvare】yum在线源
    配置文件加载
  • 原文地址:https://www.cnblogs.com/13373-/p/11347934.html
Copyright © 2011-2022 走看看