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

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十三)菜单、右键菜单

学习菜单未解决问题:点击菜单项后不关闭菜单。知道怎么解决朋友的欢迎留言,谢谢。

一、菜单menu_button

  • 菜单结构:
菜单|- 文件|- 打开文件|- 创建文件|- 退出|- 帮助|- 软件版本
  • 代码:
    • 菜单可以随意嵌套
    • 菜单的最终节点为按钮等控件
fn main() -> eframe::Result<()> {// 配置原生窗口参数let options = eframe::NativeOptions::default();eframe::run_simple_native("菜单", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx);ui.menu_button("菜单", |ui| {ui.menu_button("文件", |ui| {ui.button("打开文件");ui.button("创建文件");});ui.button("退出");ui.menu_button("帮助", |ui| ui.button("软件版本"))})});})
}

1、菜单点击事件

  • 菜单的点击事件,就是按钮的点击事件
fn main() -> eframe::Result<()> {// 配置原生窗口参数let options = eframe::NativeOptions::default();let mut key = String::new();     // 获取点击的菜单项eframe::run_simple_native("菜单", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx);ui.menu_button("菜单", |ui| {ui.menu_button("文件", |ui| {if ui.button("打开文件").clicked() {key = "打开文件".into();      // 点击事件};if ui.button("创建文件").clicked() {key = "创建文件".into();      // 点击事件};});ui.button("退出");ui.menu_button("帮助", |ui| ui.button("软件版本"))});ui.label(&key);  // 显示点击后的信息});})
}

2、菜单中的复选框

fn main() -> eframe::Result<()> {// 配置原生窗口参数let options = eframe::NativeOptions::default();let mut onoff = false;      // 选择框的值let mut undwond = false;    // 选择框的值let mut high_low = false;   // 选择框的值eframe::run_simple_native("菜单", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx);ui.menu_button("菜单", |ui| {              // 一级菜单ui.menu_button("选择", |ui| {          // 二级菜单ui.checkbox(&mut onoff, "onoff");       // 复选框ui.checkbox(&mut undwond, "undwond");   // 复选框ui.checkbox(&mut high_low, "high_low"); // 复选框})})});})
}

二、右键菜单context_menu

 ui.button("鼠标右键点击").context_menu(|ui| {ui.menu_button("按钮的右键菜单", |ui| {ui.menu_button("子菜单", |ui| {});});
});ui.label("鼠标右键点击").context_menu(|ui| {ui.menu_button("标签的右键菜单", |ui| {});
})
http://www.dtcms.com/a/347963.html

相关文章:

  • 【JavaEE】了解synchronized
  • 大数据毕业设计选题推荐-基于大数据的丙型肝炎患者数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • 【数据结构】从基础到实战:全面解析归并排序与计数排序
  • 基于stm32汽车雨刮器控制系统设计
  • Java基础第3天总结(面向对象)
  • Shell Case 条件语句详解
  • EP01:【DA】数据分析的概述
  • 01Shell脚本入门:基础命令与变量解析
  • JVM之【类加载系统】
  • 【Qt开发】常用控件(六)
  • Golang云端编程深度指南:架构本质与高阶实践
  • Flink Slot 不足导致任务Pending修复方案
  • 互联网大厂Java面试实录:从Spring到微服务的全面考察
  • 【软件安全】ARM64、x86、32 位与 64 位架构的区别、定义、应用背景
  • 个人搭建小网站教程(云服务器Ubuntu版本)
  • 【数据结构】二叉树的顺序存储、堆的实现及其应用:堆排序与Top-K问题
  • 以国产IoTDB为代表的主流时序数据库架构与性能深度选型评测
  • kanass V1.1.4版本发布,支持Mysql数据库、ubuntu安装与Mantis数据导入
  • Thonny+MicroPython搭建ESP32芯片开发环境
  • 代码性能测试——benchmark库
  • Elasticsearch Ruby 客户端故障排查实战指南
  • AI与SEO关键词协同优化
  • DBeaver连接SQL Server集成认证问题解决方案
  • xxl-job 启动后导致pod内存使用率持续增加
  • 从 Unity UGUI 到 Unreal UMG 的交互与高效实践:UI 事件、坐标系适配与性能优化
  • MATLAB 与 Simulink 联合仿真:控制系统建模与动态性能优化
  • C#_gRPC
  • RabbitMQ--消费端异常处理与 Spring Retry
  • 阿里云拉取dockers镜像
  • 在JavaScript中,比较两个数组是否有相同元素(交集)的常用方法