Qt 自定义菜单 托盘菜单

托盘菜单实现:通过QSystemTrayIcon+QMenu+QAction即可完美实现!

实现方式:createActions用于创建菜单、菜单项,translateActions用于设置文本、实现多语化,translateAccount用于设置用户空间配额。

void TrayMenu::createActions()
{help_menu = new QMenu();//创建菜单项action_show = new QAction(this);action_quit = new QAction(this);action_login_home = new QAction(this);action_account = new QAction(this);action_user_space = new QAction(this);action_help = new QAction(this);action_about = new QAction(this);action_check_update = new QAction(this);action_setting = new QAction(this);help_menu->setIcon(QIcon(":/icon/help"));action_show->setIcon(QIcon(":/icon/open"));action_login_home->setIcon(QIcon(":/icon/home"));action_account->setIcon(QIcon(":/icon/user"));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"));//添加菜单项help_menu->addAction(action_about);help_menu->addAction(action_help);help_menu->addAction(action_check_update);this->addAction(action_show);this->addAction(action_login_home);this->addSeparator();this->addAction(action_account);this->addAction(action_user_space);this->addSeparator();this->addAction(action_setting);this->addMenu(help_menu);this->addAction(action_quit);//设置信号连接connect(action_show, SIGNAL(triggered(bool)), this, SIGNAL(showWidget()));connect(action_quit, SIGNAL(triggered(bool)), this, SIGNAL(logoutWidget()));connect(action_setting, SIGNAL(triggered(bool)), this, SIGNAL(setUp()));connect(action_about, SIGNAL(triggered(bool)), this, SIGNAL(aboutUs()));connect(action_login_home, SIGNAL(triggered(bool)), MenuAction::getInstance(), SLOT(openLoginHome()));connect(action_help, SIGNAL(triggered(bool)), MenuAction::getInstance(), SLOT(openHelpMe()));QObject::connect(action_check_update, SIGNAL(triggered(bool)), MenuAction::getInstance(), SLOT(openCheckUpdate()));
}void TrayMenu::translateActions()
{help_menu->setTitle(tr("help"));action_show->setText(tr("open"));action_quit->setText(tr("quit"));action_login_home->setText(tr("login home"));this->translateAccount();action_help->setText(tr("instruction"));action_about->setText(tr("about us"));action_check_update->setText(tr("check update"));action_setting->setText(tr("setting"));
}void TrayMenu::translateAccount()
{action_user_space->setText(tr("use:") + use_space + QString("  ") + tr("total:") + total_space);
}托盘菜单项建立完成之后,在建立自己的托盘,包括:托盘图标、托盘提示信息等。
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("托盘显示内容"));

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/81460.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unbutu系统-Docker安装、JDK环境配置,Docker常用指令、Docker安装MySQL、Redis、Tomcat、Nginx,前端后分离项目部署

目录 1、防火墙 1.1、查看防火墙状态 1.2、开启防火墙 1.3、关闭防火墙 1.4、重启防火墙 1.5、查看防火墙版本 2、安装JDK 2.1、官网下载tar包 2.3、解压tar.gz文件 2.4、配置环境变量 2.4.1、查看安装路径 2.4.2、设置环境变量 2.4.3、执行该让环境变量生效 2.4…

创建k8s operator

目录 1.前提条件 2.进一步准备 2.1.安装golang 2.2.安装code(vscode的linux版本) 2.3.安装kubebuilder 3.开始创建Operator 3.1.什么是operator? 3.2.GV & GVK & GVR 3.3.创建operator 3.3.1. 生成工程框架 3.3.2.生成api(GVK) …

『PyQt5-基础篇』| 02 Pyqt5开发环境+安装配置QtDesigner

02 Pyqt5开发环境安装配置QtDesigner 1 Pycharm安装2 Python安装3 Pip安装4 PyQt5安装5 Pycharm中编译工具设置及pyqt5包的导入6 指定Qt Designer7 指定PyUIC58 指定PyRcc59 PyInstaller安装10 查看是否配置OK 1 Pycharm安装 安装教程请参考:安装教程 2 Python安装…

2023 ccpc 网络赛 L 题解

Problem L. Partially Free Meal 题面 官方题解 官方题解解读 w(k,x)计算部分 主席树常规做法&#xff0c;在一般主席树中多维护一个这个区间的总和就ok了 根据单调性分治求解部分 接下来我们来推导一下单调性&#xff0c;也就是题解中的 f ( 1 ) < f ( 2 ) < f ( …

Nodejs-nrm:快速切换npm源 / npm官方源和其他自定义源之间切换

一、理解 Nodejs nrm Nodejs nrm 是一个管理 npm 源的工具。由于 npm 在国内的速度较慢&#xff0c;很多开发者会使用淘宝的 npm 镜像源&#xff0c;但是也会遇到一些问题&#xff0c;例如某些包在淘宝镜像源中不存在&#xff0c;或者淘宝镜像源本身也会有问题。 Nodejs nrm …

字节跳动 Git 的正确使用姿势与最佳实践

版本控制Git 黑马&尚硅谷 Git的前世今生 方向介绍 为什么要学习Git 1.0 Git是什么 1.1 版本控制 1.1.1 本地版本控制 1.1.2 集中版本控制 1.1.3 分布式版本控制 我们已经把三个不同的版本控制系统介绍完了&#xff0c;Git 作为分布式版本控制工具&#xff0c; 虽然目前来讲…

【LeetCode-中等题】3. 无重复字符的最长子串

题目 题解一&#xff1a;单指针&#xff0c;滑动窗口 思路&#xff1a; 设置一个左指针&#xff0c;来判断下一个元素是否在set集合中&#xff0c;如果不在&#xff0c;就加入集合&#xff0c;right继续&#xff0c;如果在&#xff0c;就剔除重复的元素&#xff0c;计算串的长度…

sql递归查询

一、postgresql 递归sql with recursive p as(select t1.* from t_org_test t1 where t1.id2union allselect t2.*from t_org_test t2 join p on t2.parent_idp.id) select id,name,parent_id from p; sql中with xxxx as () 是对一个查询子句做别名&#xff0c;同时数据库会对…

双向-->带头-->循环链表

目录 一、双向带头循环链表概述 1.什么是双向带头循环链表 2.双向带头循环链表的优势 3.双向带头循环链表简图 二、双向带头循环链表的增删查改图解及代码实现 1.双向带头循环链表的头插 2.双向带头循环链表的尾插 3.双向带头循环链表的头删 4.双向带头循环链表的尾删…

cortex-A7核IIC实验--STM32MP157AAA

实验目的&#xff1a;采集温湿度传感器值 一&#xff0c;IIC概念 1.同步串行半双工总线&#xff0c;主要用于链接整体电路&#xff0c;硬件结构简单&#xff0c;接口连接方便&#xff0c;成本较低 2.两线制&#xff0c;只有两根双向信号线&#xff0c;数据线SDA,时钟线SCL …

el-table存在固定列,如果拖动表格头宽度,造成固定列高度崩塌

对表格添加监听表头拖动方法header-dragend"headerDragend"&#xff0c;当拖动表格头时&#xff0c;触发headerDragend方法&#xff0c;执行表格.doLayout()方法&#xff0c;重新进行布局table&#xff1b;

keepalived+lvs(DR)(四十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、作用 二、调度器配置 三、web节点配置 一、作用 使用keepalived解决lvs的单点故障 高可用集群 二、调度器配置 安装keepalived yum install -y k…