Qt 系统托盘
来源:互联网 发布:js 设置button文字 编辑:程序博客网 时间:2024/05/16 08:52
写了一个Qt 系统托盘类SystemTray:
用法:
systemTray = new SystemTray(this, ":trayicon/offline");
可重写createMenu定制复杂效果。
运行即可得到一个简易系统托盘和简单响应,效果如下:
使用Linguist翻译成中文[见Qt Linguist用法],效果如下:
使用qss 设置字体大小(微软雅黑12px) [见Qt qss设置文件],效果如下:
SystemTray类:
.h
#ifndef SYSTEMTRAY_H#define SYSTEMTRAY_H#include <QAction>#include <QMenu>#include <QIcon>#include <QWidget>#include <QSystemTrayIcon>class SystemTray : public QObject{ Q_OBJECTpublic: explicit SystemTray(QWidget *w, const QString& iconFileName); void setTrayIcon(const QString &iconFileName); void setToolTip(const QString &tip); virtual void retranslate();signals:public slots: void iconActivated(QSystemTrayIcon::ActivationReason reason);private: QWidget *widget; QIcon icon; QSystemTrayIcon *trayIcon; QAction *showAction; QAction *quitAction;protected: QMenu *trayIconMenu; virtual void createMenu();private: void createActions(); void createTrayIcon();};#endif // SYSTEMTRAY_H
.cpp
#include "systemtray.h"#include <QApplication>#include <QCoreApplication>SystemTray::SystemTray(QWidget *w, const QString &iconFileName) : QObject(), widget(w){ icon = QIcon(iconFileName); createMenu(); createTrayIcon(); trayIcon->show(); connect(trayIcon, &QSystemTrayIcon::activated, this, &SystemTray::iconActivated); retranslate();}void SystemTray::createMenu(){ showAction = new QAction(widget); connect(showAction, &QAction::triggered, widget, &QWidget::showNormal); quitAction = new QAction(widget); //connect(quitAction, &QAction::triggered, this, &SystemTray::quitTriggered);// 编译错误 connect(quitAction, &QAction::triggered, &QApplication::quit);// 新的connect写法,允许省略接受者 // 注意:trayIconMenu的父类为desktop,如果为this,则右键单击托盘不选中时,托盘菜单不消失。 trayIconMenu = new QMenu((QWidget*)QApplication::desktop());// trayIconMenu->setStyleSheet("QMenu{font-size: 12px;}"); trayIconMenu->addAction(showAction); trayIconMenu->addSeparator(); trayIconMenu->addAction(quitAction);}void SystemTray::retranslate(){ showAction->setText(tr("show")); quitAction->setText(tr("quit"));}void SystemTray::iconActivated(QSystemTrayIcon::ActivationReason reason){ switch (reason) { case QSystemTrayIcon::Trigger: // 单击 case QSystemTrayIcon::DoubleClick:// 双击 widget->showNormal(); break; case QSystemTrayIcon::MiddleClick: break; default: ; }}void SystemTray::createTrayIcon(){ trayIcon = new QSystemTrayIcon(this); trayIcon->setContextMenu(trayIconMenu); trayIcon->setIcon(icon); trayIcon->setToolTip("Tray tool tip");}void SystemTray::setTrayIcon(const QString &iconFileName){ trayIcon->setIcon(QIcon(iconFileName));}void SystemTray::setToolTip(const QString &tip){ trayIcon->setToolTip(tip);}
Tips: 注意,在注释的时候,请在// 空格再加注释,能避免解析错误。
- Qt系统托盘
- Qt 系统托盘
- Qt 系统托盘
- QT 系统托盘图标
- QT 系统托盘图标
- 创建QT系统托盘图标
- 使用QT创建系统托盘
- Qt 添加系统托盘
- Qt系统托盘程序
- QT 系统托盘图标
- 使用QT创建系统托盘
- Qt实现系统托盘
- qt之系统托盘
- QT 系统托盘图标
- Qt添加系统托盘
- Qt模仿360系统托盘
- Qt之设置系统托盘
- QT之系统托盘
- windows xp 和虚拟机linux共享文件夹的解决方法
- 获取设备显示参数
- 成功靠的不只是兴趣和热忱:没有学历没关系,但没有专业绝对不行
- poj 3067 - Japan(树状数组)
- 黑马程序员 .NET学习笔记 <6>
- Qt 系统托盘
- Memcache学习笔记(5)- memcache内存模型
- JS中的prototype
- GDB调试程序
- Android sqlLite 数据库的增删查改操作
- L4 mips的基本机制之IPC、调度和中断
- Java并发编程之ConcurrentHashMap
- 公司信贷基础知识介绍
- Error opening/initializing the selected video_out (-vo) device.