Qt之设置系统托盘
2016-07-20 13:46
543 查看
头文件:
#ifndef SYSTEMTRAYICON_H #define SYSTEMTRAYICON_H #include <QWidget> #include <QSystemTrayIcon> #include <QMenu> #include <QAction> #include <QCloseEvent> class SystemTrayIcon : public QWidget { Q_OBJECT public: explicit SystemTrayIcon(QStringList strList, QIcon icon, QWidget *parent = 0); ~SystemTrayIcon(); void createAct(); void createTrayMenu(); void createTrayIcon(); public slots: void slot_iconActivated(QSystemTrayIcon::ActivationReason reason); public: QAction *actFixed; //固定位置 private: QSystemTrayIcon *m_trayIcon; //系统托盘 QMenu *menu; //菜单 QAction *actMin; //最小化 QAction *actNormal; //正常 QAction *actExit; //退出 QStringList m_strList; //托盘信息 QIcon m_icon; //托盘图标 QWidget *pWidget; //父对象 }; #endif // SYSTEMTRAYICON_H源文件:
#include "systemtrayicon.h" #include <QApplication> #include <QDebug> SystemTrayIcon::SystemTrayIcon(QStringList strList, QIcon icon, QWidget *parent) : QWidget(parent) { pWidget = parent; m_strList = strList; m_icon = icon; createAct(); createTrayMenu(); createTrayIcon(); } SystemTrayIcon::~SystemTrayIcon() { } void SystemTrayIcon::createAct() { actFixed = new QAction("锁定位置(&F)",this); actFixed->setCheckable(true); actFixed->setChecked(true); actMin = new QAction("最小化(&N)",this); connect(actMin,SIGNAL(triggered()),pWidget,SLOT(hide())); actNormal = new QAction("还 原(&R)",this); connect(actNormal,SIGNAL(triggered()),pWidget,SLOT(showNormal())); actExit = new QAction("退出(&Q)",this); connect(actExit,SIGNAL(triggered()),qApp,SLOT(quit())); } void SystemTrayIcon::createTrayMenu() { menu = new QMenu((QWidget*)QApplication::desktop()); menu->addAction(actFixed); menu->addAction(actMin); menu->addAction(actNormal); menu->addSeparator(); //加入一个分离符 menu->addAction(actExit); } void SystemTrayIcon::createTrayIcon() { if (!QSystemTrayIcon::isSystemTrayAvailable()) //判断系统是否支持系统托盘图标 { return; } m_trayIcon = new QSystemTrayIcon(pWidget); m_trayIcon->setIcon(m_icon); //设置图标图片 m_trayIcon->setToolTip(m_strList.at(1)); //托盘时,鼠标放上去的提示信息 m_trayIcon->showMessage(m_strList.at(0), m_strList.at(1), QSystemTrayIcon::Information, 10000); m_trayIcon->setContextMenu(menu); //设置托盘上下文菜单 m_trayIcon->show(); connect(m_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(slot_iconActivated(QSystemTrayIcon::ActivationReason))); } void SystemTrayIcon::slot_iconActivated(QSystemTrayIcon::ActivationReason reason) { switch (reason) { case QSystemTrayIcon::Unknown: break; case QSystemTrayIcon::Context: break; case QSystemTrayIcon::DoubleClick: pWidget->setWindowState(Qt::WindowActive); pWidget->show(); break; case QSystemTrayIcon::Trigger: break; case QSystemTrayIcon::MiddleClick: break; default: break; } }父对象中引用(设置系统托盘):
//设置任务栏系统托盘 QStringList strList; strList << "Rose" << "Rose V1.0"; QIcon icon(":/images/3.png"); SystemTrayIcon *trayIcon = new SystemTrayIcon(strList, icon, dlg); connect(trayIcon->actFixed, SIGNAL(triggered(bool)), dlg, SLOT(slot_fixed(bool)));效果图:
相关文章推荐
- QT学习之路————QT程序在开发板上显示 中文字体
- Qt+opencv开发笔记(1)
- 《Qt》part 3 Qt5.5.0窗口之间传值(一)
- Qt 5.7.0 编译出现cannot find -lGL问题
- 用QT写一个搜索引擎思路
- OpenCV配置于Qt软件
- Qt登录对话框
- Qt只能运行一个实例的3种方法
- 创建动态链接库,使用自己的dll中的排序算法,用Qt将排序用时在界面上用表格的形式呈现出来
- QT发布的EXE打包压缩成单文件
- Qt 文件搜索(写入文本文件)
- QT5的QDesktopSerivices不同
- Qt绘制系统(Paint System)
- QT系列教程
- QT第二天学习
- 自定义圆形QLabel控件
- Qt Creator在Windows上的调试器安装与配置
- Qt之QRoundProgressBar(圆形进度条)
- Qt之QRoundProgressBar(圆形进度条)
- Qt之QRoundProgressBar(圆形进度条)