【rust/egui】(七)看看template的app.rs:Slider

news2024/11/24 6:03:13

说在前面

  • rust新手,egui没啥找到啥教程,这里自己记录下学习过程
  • 环境:windows11 22H2
  • rust版本:rustc 1.71.1
  • egui版本:0.22.0
  • eframe版本:0.22.0
  • 上一篇:这里

Slider

  • 滑块,如下图
    在这里插入图片描述

  • 定义:

    pub struct Slider<'a> {
        get_set_value: GetSetValue<'a>, // 滑块对应的值 闭包 设置并返回值
        range: RangeInclusive<f64>, // 值的范围
        spec: SliderSpec, // 指数型滑块 某一段值得变化非常小
        clamp_to_range: bool, // 是否对值进行裁剪
        smart_aim: bool, // 找到范围内的最'简约'的数值 例如小数位最小的值
        show_value: bool, // 是否显示值
        orientation: SliderOrientation, // 滑块的方向 横向或者竖向
        prefix: String, // 滑块显示值的前缀 例如 "x=
        suffix: String, // 滑块显示值的后缀 例如  m"
        text: WidgetText, // 滑块文本 可用于解释滑块控制的值的含义之类的
        /// Sets the minimal step of the widget value
        step: Option<f64>, // 拖动滑块时变动的最小值
        drag_value_speed: Option<f64>, 
        min_decimals: usize, // 显示的最小小数位数
        max_decimals: Option<usize>, // 显示的最大小数位数
        custom_formatter: Option<NumFormatter<'a>>, // 对显示的值进行自定义格式化
        custom_parser: Option<NumParser<'a>>,
        trailing_fill: Option<bool>, // 是否对滑块下的滑动条填充颜色
    }
    
  • 我们可以通过ui.add()的方式进行添加:

    ui.add(egui::Slider::new(value, 0.0..=10.0).text("value"));
    

    new方法的定义为:

    pub fn new<Num: Numeric>(value: &'a mut Num, range: RangeInclusive<Num>) -> Self
    

    参数value为可变借用类型,且使用Numeric特性进行约束
    该方法生成的滑块为横向滑块

  • 同样可以自定义一些样式,或者改变一些属性

  • orientation

    // 可以使用vertical方法生成竖向滑块
    ui.add(egui::Slider::new(value, 0.0..=10.0).text("value").vertical());
    

    在这里插入图片描述

  • spec

    ui.add(egui::Slider::new(value, 0.0..=1000.0).text("value").logarithmic(true));
    

    在这里插入图片描述

  • smart_aim,默认值为true

    ui.add(egui::Slider::new(value, 0.0..=10.0).text("value").min_decimals(2).smart_aim(false));
    

    在这里插入图片描述

  • prefix/suffix

    ui.add(egui::Slider::new(value, 0.0..=10.0).text("value").prefix("x=").suffix("m"));
    

    在这里插入图片描述

  • trailing_fill

    ui.add(egui::Slider::new(value, 0.0..=10.0).text("value").trailing_fill(true));
    

    在这里插入图片描述

  • custom_formatter/custom_parser

    ui.add(
        egui::Slider::new(value, 0.0..=((60.0 * 60.0 * 24.0) - 1.0))
            .custom_formatter(|n, _| {
                let n = n as i32;
                let hours = n / (60 * 60);
                let mins = (n / 60) % 60;
                let secs = n % 60;
                format!("{hours:02}:{mins:02}:{secs:02}")
            })
            .custom_parser(|s| {
                let parts: Vec<&str> = s.split(':').collect();
                if parts.len() == 3 {
                    parts[0]
                        .parse::<i32>()
                        .and_then(|h| {
                            parts[1].parse::<i32>().and_then(|m| {
                                parts[2]
                                    .parse::<i32>()
                                    .map(|s| ((h * 60 * 60) + (m * 60) + s) as f64)
                            })
                        })
                        .ok()
                } else {
                    None
                }
            }),
    );
    

    在这里插入图片描述

其他

  • app.rs中还有一些其他元素,例如labelhyperlink_to等,这些相对来说比较简单,这里就不再详细展开
  • 接下来我们将把实现从template挪开,开始接触egui中的其他内容

参考

  • slider

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【01背包理论】01背包问题dp[i][j] <动态规划>

【01背包理论】01背包问题 dp[i][j] 有 n 件物品和一个最多能背重量为 w 的背包。 第 i 件物品的重量是 weight[i]&#xff0c;得到的价值是 value[i] 。 每件物品只有一个&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 题解 动态规划 确定 dp 数组以及下标的含义…

分布式配置中心 Apollo

文章目录 类似Lion一、Apollo客户端实现原理二、配置更新实现三、架构四大板块 &#xff1a;三个辅助服务发现模块Why Eureka 类似Lion 一、Apollo客户端实现原理 1、客户端和服务端会保持一个长连接&#xff0c;从而第一时间获取配置更新的推送。 2、客户端还会定时从Apollo配…

#FTHR-G0001开发板开箱测评#

最近看到芯查查有这个活动&#xff0c;就申请了这个开发板体验一下&#xff0c;没想到一申请就成功了&#xff0c;哈哈&#xff0c;人人都是天选之子了属于是&#xff0c;下面记录一下使用过程。 1、首先是外观部分 外观板子比较小巧的样子&#xff0c;下面放图&#xff0c;基…

BW常见操作及问题处理(适合小白)

1、如何跑BW处理链 &#xff1f;TCODE&#xff1a; RSA1 选中要运行的处理链。点击运行就可以。 2、如何改变处理链的运行时间节点与频率。&#xff08;这是SAP运行后台job的知识点&#xff09; 选中释放那个条目在选择 菜单 -> 作业-> 修改 点击开始条件 然后就可以修改…

QChart绘制柱状图并修改单个柱状条的颜色

文章目录 前言Qt Chart修改单个柱状图的颜色柱状堆积图利用柱状堆积图实现修改单个柱状条的颜色总结 前言 Qt Charts是Qt官方提供的一个模块&#xff0c;用于在Qt应用程序中创建各种图表和数据可视化。它提供了一组用于绘制和展示统计数据、趋势分析、实时数据等的类和函数。 …

前端Vue仿企查查 天眼查知识产权标准信息列表组件

引入Vue仿企查查天眼查知识产权标准信息列表组件 随着技术的不断发展&#xff0c;传统的开发方式使得系统的复杂度越来越高。在传统开发过程中&#xff0c;一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改&#xff0c;造成牵一发而动全身的情况。为了解决这个问题…

京东API接口解析,实现获得JD商品评论

要获取京东商品评论&#xff0c;需要使用京东的开放平台API接口。以下是一个基本的示例&#xff0c;解析并实现获取JD商品评论的API接口。 首先&#xff0c;你需要访问京东开放平台并注册一个开发者账号。注册完成后&#xff0c;你需要创建一个应用并获取到API的权限。 在获取…

Jenkins清理构建(自动)

需求背景实现方法 Dashboard-->Project-->配置-->General-->Discard old builds # 注意&#xff1a;自动清理构建历史将在下次构建时进行

JAVA宝典----容器(理解记忆)

目录 一、Java Collections框架是什么&#xff1f; 二、什么是迭代器&#xff1f; 三、Iterator与ListIterator有什么区别&#xff1f; 四、ArrayList、Vector和LinkedList有什么区别&#xff1f; 五、HashMap、Hashtable、TreeMap和WeakHashMap有哪些区别&#xff1f; 六…

光伏太阳花

家庭用电只是电力消费的一部分。工厂里&#xff0c;生产设备的开动离不开电力&#xff0c;生产要持续就不能断电&#xff0c;没有生产也就没有我们生活中的消费品&#xff0c;超市的货架上将空荡荡的&#xff0c;我们生活的世界也就崩溃了。可见&#xff0c;电对我们来说是无论…

Mysql 性能分析 explain、Describe

通常 多表查询 比 子查询效率更高一些&#xff0c; 数据搜索引擎 如果子查询能转换城成多表查询&#xff0c;会自动转换。 explain 、describe 语法结构 explain select_options | update_options | insert_options | replace_options 或 describe select_options | update…

【C++从0到王者】第二十六站:一些经典的多态面试题

文章目录 前言一、多态的常见选择二、多态的常见问答总结 前言 多态是C的一大疑难杂症&#xff0c;有很多细枝末节的东西非常繁琐&#xff0c;这里搜集了一些常见的选择与问答。可以为大家带来帮助理解多态 一、多态的常见选择 下面哪种面向对象的方法可以让你变得富有( ) A: …

C语言面试题值反转字符串

知识捡漏本 1.C语言优先级 &#xff1a;左高于高于 右 2.定义宏函数product&#xff0c;调用product后&#xff0c;里面的i和i都是加两次1&#xff0c;i就是两个加2后的i相乘&#xff0c;i是开始的i和1后的i相乘。 3.用i (j4,k 8,m 16);这种定义方法&#xff0c;最终i和最后一…

《机器人学一(Robotics(1))》_台大林沛群 第 4 周【机械臂 逆运动学】 Quiz 4

待完善&#xff1a; 第6-8 谁做出来了&#xff0c;麻烦指下路&#xff0c;谢谢&#xff01; 第6-7&#xff1a; 连蒙带猜&#x1f923;第8&#xff1a; 猜不出来&#x1f602; coursera链接 文章目录 第1题第2题第3题第4题第5题-8求解 θ3-θ1的 Python 代码 第8题求解 θ4 …

酷克数据与华为合作更进一步 携手推出云数仓联合解决方案

在一起&#xff0c;共迎新机遇&#xff01;8月25-26日&#xff0c;2023华为数据存储用户精英论坛在西宁召开。酷克数据作为国内云原生数据仓库的代表企业&#xff0c;也是华为重要的生态合作伙伴&#xff0c;受邀参与本次论坛&#xff0c;并展示了云数仓领域最新前沿技术以及联…

从半年报里,看中国制造高质量发展的“美的样本”

文 | 螳螂观察 作者 | 图霖 制造业生产和市场需求稳步回升的大背景下&#xff0c;国内制造企业来到新的竞逐拐点&#xff0c;高质量发展的样本企业将获得更大的突围机遇。 作为中国制造代表性企业的美的集团&#xff0c;一直是稳健经营的代表企业。但因受到大环境冲击&#…

JavaScript设计模式(三)——单例模式、装饰器模式、适配器模式

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

手写RPC框架--2.介绍Zookeeper

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧)https://gitee.com/captaindeng/dcyrpc-framework 该项目的RPC通信将采用NettyZookeeper&#xff0c;所以会在前两章介绍使用方法 介绍Zookeeper Zookeepera.概述1) 数据模型2) Watcher机制 b.安装和基本操作1) Java操作zookeep…

记一次postgres导致cpu100%

周末想打两把训练赛&#xff0c;没想到朋友发来一个截图 我&#xff1a;嗯&#xff1f;&#xff1f;wtf 于是我上服务器看了一下日志&#xff0c;诶我超&#xff0c;还真的 查看进程详情 [rootiZ7xv7q4im4c48qen2do2bZ project]# pstree -tp postgres memory(904475)─┬─…