当前位置: 首页 > 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.xdnf.cn/news/1359847.html

相关文章:

  • JDK版本报错
  • Function + 枚举 + Map:轻量路由器的最佳实践
  • [GeographicLib] LocalCartesian用法
  • 时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评
  • Palantir Foundry 领先其他数据平台5到10年:一位使用者的深入观察
  • 门面设计模式
  • 第4章 SPSS简介与数据库构建
  • 网络协议---TCP
  • 最大连续1的个数Ⅲ-滑动窗口
  • 2025/8/24 DockerDesktop安装使用
  • 【网络运维】Shell 脚本编程:while 循环与 until 循环
  • 审核问题——应用未配置图标的前景图和后景图
  • JUC——AQS
  • 客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
  • 蓝凌EKP产品:从 XML 到 JSON ——表单存储的性能优化实践
  • [自用笔记]上传本地项目至github
  • 【嵌入式开发 Linux 常用命令系列 8 -- git checkout 解冲突详细介绍】
  • Qt工具栏中图标槽函数没有响应的问题分析
  • 十一、redis 入门 之 数据持久化
  • 基于FPGA的情绪感知系统设计方案:心理健康监测应用(一)
  • yggjs_rlayout框架v0.1.2使用教程 01快速开始
  • 基于RBF-GA的铝/镁异材FSLW工艺参数优化研究
  • Qt---架构文件.pro
  • 02-开发环境搭建与工具链
  • 鸿蒙中点击响应时延分析
  • 多核多线程应用程序开发可见性和乱序如何处理
  • css3之flex布局
  • Linux 学习笔记 - 集群管理篇
  • 音视频学习(五十五):H264中的profile和level
  • pyecharts可视化图表-scatter:从入门到精通