当前位置: 首页 > news >正文

QT 范例阅读:系统托盘 The System Tray Icon example

main.cpp

    QApplication app(argc, argv);//判断系统是否支持 系统托盘功能if (!QSystemTrayIcon::isSystemTrayAvailable()) {QMessageBox::critical(0, QObject::tr("Systray"),QObject::tr("I couldn't detect any system tray ""on this system."));return 1;}//关闭 隐式退出在最后一个窗口关闭时(这个示例该行语句注释也没区别)QApplication::setQuitOnLastWindowClosed(false);

windows.h

protected://重载关闭事件void closeEvent(QCloseEvent *event) override;private slots://点击托盘图标时的处理void iconActivated(QSystemTrayIcon::ActivationReason reason);//显示托盘弹出消息void showMessage();//点击托盘消息后的处理void messageClicked();private:   //托盘图标右键 菜单动作QAction *minimizeAction;QAction *maximizeAction;QAction *restoreAction;QAction *quitAction;//系统托盘QSystemTrayIcon *trayIcon;//托盘菜单QMenu *trayIconMenu;
void Window::createActions()
{minimizeAction = new QAction(tr("Mi&nimize"), this);connect(minimizeAction, &QAction::triggered, this, &QWidget::hide);maximizeAction = new QAction(tr("Ma&ximize"), this);connect(maximizeAction, &QAction::triggered, this, &QWidget::showMaximized);restoreAction = new QAction(tr("&Restore"), this);connect(restoreAction, &QAction::triggered, this, &QWidget::showNormal);quitAction = new QAction(tr("&Quit"), this);connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit);
}void Window::createTrayIcon()
{trayIconMenu = new QMenu(this);trayIconMenu->addAction(minimizeAction);trayIconMenu->addAction(maximizeAction);trayIconMenu->addAction(restoreAction);trayIconMenu->addSeparator();trayIconMenu->addAction(quitAction);trayIcon = new QSystemTrayIcon(this);trayIcon->setContextMenu(trayIconMenu);
}//是否显示托盘图标connect(showIconCheckBox, &QAbstractButton::toggled, trayIcon, &QSystemTrayIcon::setVisible);//托盘消息点击事件    connect(trayIcon, &QSystemTrayIcon::messageClicked, this, &Window::messageClicked);//托盘图标点击事件connect(trayIcon, &QSystemTrayIcon::activated, this, &Window::iconActivated);void Window::closeEvent(QCloseEvent *event)
{//如果显示了托盘,关闭事件忽略,窗体隐藏if (trayIcon->isVisible()) {QMessageBox::information(this, tr("Systray"),tr("The program will keep running in the ""system tray. To terminate the program, ""choose <b>Quit</b> in the context menu ""of the system tray entry."));hide();event->ignore();}
}//托盘图标点击消息处理
void Window::iconActivated(QSystemTrayIcon::ActivationReason reason)
{switch (reason) {case QSystemTrayIcon::Trigger:case QSystemTrayIcon::DoubleClick: //改变图标iconComboBox->setCurrentIndex((iconComboBox->currentIndex() + 1) % iconComboBox->count());break;case QSystemTrayIcon::MiddleClick:showMessage();break;default:;}
}//显示消息
void Window::showMessage()
{showIconCheckBox->setChecked(true);QSystemTrayIcon::MessageIcon msgIcon = QSystemTrayIcon::MessageIcon(typeComboBox->itemData(typeComboBox->currentIndex()).toInt());if (msgIcon == QSystemTrayIcon::NoIcon) {QIcon icon(iconComboBox->itemIcon(iconComboBox->currentIndex()));trayIcon->showMessage(titleEdit->text(), bodyEdit->toPlainText(), icon,durationSpinBox->value() * 1000);} else {trayIcon->showMessage(titleEdit->text(), bodyEdit->toPlainText(), msgIcon,durationSpinBox->value() * 1000);}
}

相关文章:

  • React useEffect使用
  • eCos flash模拟EEPROM实现NV系统
  • 高亮显示不一致
  • 【Docker与微服务】基础篇
  • centos7安装google chrome和chromium
  • ArcGIS Pro 按照字段进行融合或拆分
  • 一文讲透ast.literal_eval() eval() json.loads()
  • docker手动迁移镜像
  • mysql 锁知识汇总
  • 2024年:用OKR管理你的生活
  • 【Shell的运行原理以及Linux当中的权限问题】
  • nginx flv模块的使用和源码分析
  • 嵌入式中C 语言中的三块技术难点
  • Python 处理小样本数据的文档分类问题
  • k8s 部署 nocas 同时部署mysql
  • [译]Python中的类属性与实例属性的区别
  • 【Linux系统编程】快速查找errno错误码信息
  • 345-反转字符串中的元音字母
  • Android Studio:GIT提交项目到远程仓库
  • gf框架之分页模块(五) - 自定义分页
  • JS数组方法汇总
  • React 快速上手 - 07 前端路由 react-router
  • SpringBoot几种定时任务的实现方式
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 阿里研究院入选中国企业智库系统影响力榜
  • 简析gRPC client 连接管理
  • 聊聊flink的BlobWriter
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 数组的操作
  • 网络应用优化——时延与带宽
  • 最简单的无缝轮播
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 数据可视化之下发图实践
  • ​linux启动进程的方式
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (145)光线追踪距离场柔和阴影
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (强烈推荐)移动端音视频从零到上手(上)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (五)网络优化与超参数选择--九五小庞
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • ***测试-HTTP方法
  • ***通过什么方式***网吧
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .net下简单快捷的数值高低位切换
  • .Net语言中的StringBuilder:入门到精通
  • .skip() 和 .only() 的使用
  • @property python知乎_Python3基础之:property
  • [20181219]script使用小技巧.txt