博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt之系统托盘(QSystemTrayIcon详解)
阅读量:4167 次
发布时间:2019-05-26

本文共 2302 字,大约阅读时间需要 7 分钟。

托盘是什么?这个就不用在多说了!而Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘。。。

  void TrayMenu::createActions()

  {
     //创建托盘项
     action_show = new QAction(this);
     action_quit = new QAction(this);
     action_login_home = new QAction(this);
     action_help = new QAction(this);
     action_about = new QAction(this);
     action_check_update = new QAction(this);
     action_setting = new QAction(this);

 

     //设置托盘项图标

     action_show->setIcon(QIcon(":/icon/open"));

     action_login_home->setIcon(QIcon(":/icon/home"));
     action_help->setIcon(QIcon(":/icon/help"));
     action_about->setIcon(QIcon(":/icon/about"));
     action_check_update->setIcon(QIcon(":/icon/update"));
     action_setting->setIcon(QIcon(":/icon/set"));
     action_quit->setIcon(QIcon(":/icon/quit"));

    

     //设置托盘想文本

     action_show->setText(QString("显示"));

     action_quit->setText(QString("退出"));
     action_login_home->setText(QString("登录网页"));

     action_help->setText(QString("帮助"));

     action_about->setText(QString("关于"));

     action_check_update->setText(QString("检查更新"));

     action_setting->setText(QString("设置"));

 

     //添加菜单项

     this->addAction(action_show);
     this->addAction(action_setting);
     this->addAction(action_login_home);
     this->addSeparator();
     this->addAction(action_help);
     this->addAction(action_about);
     this->addAction(action_check_update);
     this->addSeparator();
     this->addAction(action_quit);

     action_setting->setVisible(false);

 

     //设置信号连接(这里仅列举连接显示窗口的信号)

     QObject::connect(action_show, SIGNAL(triggered(bool)), this, SIGNAL(showWidget()));
 }

 

  LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent)

  {

     QSystemTrayIcon *system_tray = new QSystemTrayIcon();

     //放在托盘提示信息、托盘图标

     system_tray ->setToolTip(QString("我就是托盘"));

     system_tray ->setIcon(QIcon(":/icon/login"));

     TrayMenu *tray_menu = new TrayMenu();

     system_tray->setContextMenu(tray_menu);

     //点击托盘执行的事件

      connect(system_tray , SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconIsActived(QSystemTrayIcon::ActivationReason)));
     connect(tray_menu, SIGNAL(showWidget()), this, SLOT(showNormal()));

     //显示托盘

     system_tray->show();

    //托盘显示提示信息

    system_tray->showMessage(QString("托盘标题"), QString("托盘显示内容"));

  }

 

  void LoginDialog::iconIsActived(QSystemTrayIcon::ActivationReason reason)

  {
     switch(reason)
     {
     //点击托盘显示窗口
     case QSystemTrayIcon::Trigger:
      {
        showNormal();
        break;
       
     //双击托盘显示窗口
     case QSystemTrayIcon::DoubleClick:
     {
       showNormal();
       break; 
                
     default:
      break;
     }
  }

 

  OK,这样我们的托盘功能就Over了!

转载地址:http://wxqxi.baihongyu.com/

你可能感兴趣的文章
CSS盒子模型
查看>>
HTML总结(一)
查看>>
3月英语--平平淡淡
查看>>
csf格式转换--逼自己一把
查看>>
ASP控件总结(一)
查看>>
Repeater&Validator控件使用
查看>>
细水翻起半点波涛--4月英语
查看>>
ASP--Active Server Pages Summary
查看>>
常见的电脑病毒
查看>>
站在巨人的肩膀上!
查看>>
2017年5月软考总结
查看>>
Node.js中运行JavaScript代码
查看>>
5月英语总结--I will do it well.
查看>>
认识JS
查看>>
Google浏览器--翻译一定要“出去”吗?
查看>>
bash:ifconfig:未找到命令
查看>>
送给毕业的歌
查看>>
openssl 证书验证
查看>>
我,程序人生
查看>>
echarts的渐变色配置 LinearGradient
查看>>