当前位置: 首页 > 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);}
}

http://www.lryc.cn/news/293731.html

相关文章:

  • OpenAI Gym 高级教程——深度强化学习库的高级用法
  • K8sGPT 会彻底改变你对 Kubernetes 的认知
  • 计组学习笔记2024/2/4
  • 25种Google的搜索技巧
  • 769933-15-5,Biotin aniline,可以合成多种有机化合物和聚合物
  • 回归预测 | Matlab实现POA-CNN-LSTM-Attention鹈鹕算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)
  • B站视频在电商中的应用:如何利用item_get_video API提高转化率
  • 【Linux】统信服务器操作系统V20 1060a-AMD64 Vmware安装
  • c++类继承
  • Git 指令
  • JAVA中的多态参数
  • Ubuntu Linux 下安装和卸载cmake 3.28.2版本
  • 【C++】类和对象3:默认成员函数之析构函数
  • 2024美赛C题完整解题教程及代码 网球运动的势头
  • 二、人工智能之提示工程(Prompt Engineering)
  • 【leetcode题解C++】98.验证二叉搜索树 and 701.二叉搜索树中的插入操作
  • 【Vue.js设计与实现】第二篇:响应系统-阅读笔记(持续更新)
  • 微信小程序之本地生活案例的实现
  • 智能决策的艺术:探索商业分析的最佳工具和方法
  • C#(C Sharp)学习笔记_前言及Visual Studio Code配置C#运行环境【一】
  • 政安晨的AI笔记——Bard大模型最新提示词创作绘画分析
  • 基础算法bfs -剪枝问题
  • 在Meteor Lake上测试基于Stable Diffusion的AI应用
  • 情人节心动礼物:共度情人节美好时刻的礼物推荐
  • 远程手机搭建Termux环境,并通过ssh连接Termux
  • 基于EdgeWorkers的边缘应用如何进行单元测试?
  • 【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?
  • 【CSS系列】常用容易忽略的css
  • Java 数据结构 二叉树(二)红黑树
  • React18-完成弹窗封装