ToB企服应用市场:ToB评测及商务社交产业平台
标题:
[rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(02):滑动条部件
[打印本页]
作者:
农民
时间:
2025-1-8 11:54
标题:
[rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(02):滑动条部件
前言
本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发。
iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动。
本合集是基于新版本的关于分部件(widget)的利用介绍,包括源代码介绍、实例利用等。
环境配置
系统:window10
平台:visual studio code
语言:rust
库:iced 0.13
slider部件简介
iced的官方定义,slider的功能是:
Sliders let users set a value by moving an indicator.
1、slider的定义与参数
官方源码
pub struct Slider<'a, T, Message, Theme = crate::Theme>
where
Theme: Catalog,
{
range: RangeInclusive<T>,
step: T,
shift_step: Option<T>,
value: T,
default: Option<T>,
on_change: Box<dyn Fn(T) -> Message + 'a>,
on_release: Option<Message>,
width: Length,
height: f32,
class: Theme::Class<'a>,
}
复制代码
range
,顾名思义,指的是slider的滑动范围,它的类型是:RangeInclusive,这里的T是泛型,而
RanInclusive
的实现形式如下:
1..=3
表现slider的滑动范围的起始值为1,结束值为3。也可以理解为最小值和最大值。
step
表现slider的步长,即滑动时每移动一个单元的长度,默认为为1.0。
value
表现slider的当前值,即滑动过程的过程值。
on_change
是slider的滑动事件处理函数,即滑动时会触发此函数,函数的返回消息中包罗有实时值。
2、实例利用
我们添加一个slider以及一个text部件,当我们滑动slider时,text实时显示slider的值,并且text的文本尺寸会随着slider的值的变化而变化。
先来修改代码:
为结构体Counter创建一个变量,用于传递slider的值。
slider(0.0..=100.0, state.value, Message::ValueChanged)
复制代码
然后新建一个Message,用于监控slider的滑动事件:
range: RangeInclusive<T>,
step: T,
value: T,
on_change: Box<dyn Fn(T) -> Message + 'a>,
复制代码
然后就是update和view中的更新与渲染:
update:
#[derive(Clone,Default)]
struct Counter {
slidervalue:f32,
}
复制代码
view:
#[derive(Debug,Clone, Copy)]
enum Message {
SliderChange(f32),
}
复制代码
此例中,我们将slider的range设置为1.0到100.0,并且将变量slidervalue绑定到了text的size参数。
我们看一下动态演示:
当然,上面演示的是很简朴的应用,事实上,slider可以用于调解应用程序中的某些输入参数值,也可以调解结构的大小,比如调解图像显示区域等。这些在后续的博文中都会应用到,本文不做赘述。
3、综述
slider部件与button、text等部件,都属于比较常用的部件,无论是用于窗口界面的输入,照旧用于结构的调解,都可以很好的利用。本文以slider为例,介绍一下单个部件的利用,后续博文中,将不再单独介绍某个部件,而是以功能应用为导向,附带部件的利用介绍。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4