上节继续,研究下系统托盘。

一、tauri.conf.json配置启用系统托盘

二、Rust中添加托盘

运行效果:

但是只有一个托盘图标,点了啥反应都没有。

三、给托盘加菜单

效果:

接下来,给托盘及托盘菜单添加事件响应:

use tauri::{
CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem,
}; fn main() {
let quit = CustomMenuItem::new("quit".to_string(), "关闭窗口");
let hide = CustomMenuItem::new("hide".to_string(), "隐藏窗口");
let tray_menu = SystemTrayMenu::new()
.add_item(quit)
.add_native_item(SystemTrayMenuItem::Separator)
.add_item(hide); let system_tray = SystemTray::new().with_menu(tray_menu); tauri::Builder::default()
.system_tray(system_tray)
.on_system_tray_event(|app, event| menu_handle(app, event))
.run(tauri::generate_context!())
.expect("failed to run app");
} fn menu_handle(app_handle: &tauri::AppHandle, event: SystemTrayEvent) {
match event {
SystemTrayEvent::LeftClick {
position: _,
size: _,
..
} => {
println!("鼠标-左击");
}
SystemTrayEvent::RightClick {
position: _,
size: _,
..
} => {
println!("鼠标-右击");
}
SystemTrayEvent::DoubleClick {
position: _,
size: _,
..
} => {
println!("鼠标-双击");
}
SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() {
"quit" => {
std::process::exit(0);
}
"hide" => {
let item_handle = app_handle.tray_handle().get_item(&id);
let window = app_handle.get_window("home").unwrap();
if window.is_visible().unwrap() {
window.hide().unwrap();
item_handle.set_title("显示窗口").unwrap();
} else {
window.show().unwrap();
item_handle.set_title("隐藏窗口").unwrap();
}
}
_ => {}
},
_ => {}
}
}

核心都在menu_handle函数中

参考文章:

https://tauri.app/v1/guides/features/system-tray

tauri学习(6)-系统托盘systemTray的更多相关文章

  1. 小菜学习Winform(七)系统托盘

    前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...

  2. QT中自定义系统托盘的实现—c++语言为例

    将要介绍的是:QT中自定义系统托盘(systemtray)的一个Demo,希望能帮需要的读者快速上手. 前提假设是诸位已经知道QT中的signals .slot以及资源文件,所以关于这些不会再累述. ...

  3. WP7系统托盘和应用程序栏

    (一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...

  4. 用Qt写软件系列四:定制个性化系统托盘菜单

    导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...

  5. Java应用程序使用系统托盘资源

    要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1.线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2.获得一个Syste ...

  6. JavaSE 初学系统托盘图标SystemTray类

    文章目录 1.预备知识 2.使系统托盘显示图标 3.添加提示 4.添加弹出菜单 设置Java程序的系统托盘图标,用到SystemTray类和TrayIcon类. 1.预备知识 JavaAPI对于Sys ...

  7. QT系统托盘应用程序

    在QT中QSystemTrayIcon类提供了创建系统托盘程序的功能. QSystemTrayIcon类为系统托盘中的应用程序提供图标.现代操作系统通常会在桌面上提供一个称为系统托盘(system t ...

  8. Swing实现系统托盘

    /* 实现系统托盘化 */ protected void setToolSystemTray() { // 系统是否支持系统托盘 if (SystemTray.isSupported()) { // ...

  9. WinForm 程序在系统托盘显示

    前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...

  10. java程序加到系统托盘的方法

    package swingtest; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; impor ...

随机推荐

  1. Windows管理小工具

    Windows 管理小工具 概述 Windows 管理小工具 是一个基于批处理脚本的多功能工具,旨在帮助用户快速管理 Windows 系统中的常见设置和功能.通过简单的菜单操作,用户可以轻松完成 Wi ...

  2. RabbitMQ发布确认及备份交换机

    RabbitMQ发布确认及备份交换机 可以通过设置RabbitMQ的发布确认和失败回退功能来确认消息是否成功发布. 也可以为交换机设置备份交换机,来接收不可路由的消息. demo结构 配置及实现 ap ...

  3. 解决C盘根目录不能创建文件,只能创建文件夹问题

    转载:https://blog.csdn.net/xinke453/article/details/7496545 解决方法 用管理员运行cmd 输入 icacls c:\ /setintegrity ...

  4. c语言笔记(翁凯男神

    哼,要记得好好学习去泡帅哥吖 一.快速入门 %p 输出地址 #include <stdio.h> void f(int *p); int main(){ int i = 1; printf ...

  5. WPF 基于Transform实现画布超出边界触发计算

    有些场景需要对画布边界做界限控制,此时需要计算画布的四个方向的界限和极值 先看效果图: 画布在通过RenderTransform 做变换,由于在变换的过程中,实际的宽高没有改变,需要通过Transfo ...

  6. qt获得当前窗口所在屏幕的大小

    假如这个窗口的指针为this 记得要加头文件哦 #include <QDesktopWidget> #include <QApplication> //获得当前屏幕是第几屏幕 ...

  7. Qt渲染漫谈(一)

    最近在看一些关于游戏引擎的东西,本来是有几个游戏的小点子,其实实现起来还挺麻烦的,想找个游戏引擎看看能不能码起来.辗转之后发现了很多2D引擎,其中国产的要数cocos2dx用的好像是比较广泛,但是好多 ...

  8. Ubuntu部署tensorflow(CPU/GPU)方法

      本文介绍在Linux操作系统的发行版本Ubuntu中,配置可以用CPU或GPU运行的Python新版本深度学习库tensorflow的方法.   在文章部署CPU与GPU通用的tensorflow ...

  9. java后端http大文件传输接口笔记

    笔记 接口方 package com.chinaums.demo.example.controller; import org.springframework.web.bind.annotation. ...

  10. 二十、基于Vant Weapp的生日管家

    目前市面上提供了一些免费开源的第三方小程序UI组件库,可以下载后放到项目文件夹中直接使用,比起开发者从头开始自定义组件更为方便.高效.本次考虑使用第三方UI组件来实现界面的视觉统一.本次以有赞第三方U ...