LVGL--滑块部件(lv_slider)

本文详细介绍了滑块部件在LV框架中的使用,包括其组成部分、API函数如获取和设置值、范围和模式,以及如何在GUI中实现滑动事件回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滑块部件(lv_slider)

滑块部件常用于调节某个参数的值,它以直线滑动的形式来修改数值。
在这里插入图片描述

滑块部件的组成部分

@主体(LV_PART_MAIN)
@指示器(LV_PART_INDICTOR)
@旋钮(LV_PART_KNOB)

滑块部件的相关API函数

	void event_cb(lv_event_t *e)
{
    lv_obj_t *target = lv_event_get_target(e);
    //知识点3:获取当前值&&左值
    printf("%d-%d\n",lv_slider_get_left_value(target),
           lv_slider_get_value(target));                                    //获取当前左值,当前值
}
void my_gui()
{
	//知识点1:创建滑块部件
    lv_obj_t *slider = lv_slider_create(lv_scr_act());                      //创建滑块部件
    
    //知识点2:设置大小,当前值,范围值
    lv_obj_set_size(slider,200,20);                                         //高度>宽度,滑块为纵向
    lv_obj_center(slider);
    lv_slider_set_value(slider,50,LV_ANIM_OFF);                             //设置当前值
    lv_slider_set_range(slider,-100,100);                                   //设置范围
    lv_obj_add_event_cb(slider,event_cb,LV_EVENT_VALUE_CHANGED,NULL);       //为滑块添加按键回调函数
	
	//知识点4:模式设置
    lv_slider_set_mode(slider,LV_SLIDER_MODE_RANGE);                        //设置模式

	//知识点5:设置,获取左值
    lv_slider_set_left_value(slider,-50,LV_ANIM_OFF);                        //设置左值
}

知识点4:涉及到的模式的说明
在这里插入图片描述

效果如下

在这里插入图片描述

<think>嗯,用户想了解LVGL中各个组成部分的作用,比如LV_PART_MAIN、LV_PART_SCROLLBAR这些。首先,我需要回忆一下官方文档里的内容。记得之前看到过这些部分主要是用来设置不同部件的样式的。比如主区域是部件的主体部分,滚动条则是滚动相关的部分。 用户提到的各个部分,可能需要逐个解释。比如LV_PART_MAIN,应该是大部分部件的基础,像按钮的背景、标签的底色都属于这个部分。然后是滚动条,当部件有滚动功能时,滚动条的样式在这里设置。指示器可能用在滑块或者进度条上,显示当前值的位置。手柄部分比如滑块的拖动按钮,用户调整数值时会用到。 接下来是LV_PART_SELECTED,这可能用于列表或下拉框中被选中的项,改变选中项的背景色或文字颜色。LV_PART_ITEMS可能对应表格中的单元格或者列表中的各个项,每个项的样式可以单独设置。光标部分在输入框里出现,比如文本输入时的闪烁光标,这部分可以设置颜色和宽度。 还有LV_PART_CUSTOM_FIRST,这个应该是用户自定义部分的起点,允许开发者扩展自己的部件部分。而LV_PART_ANY可能是一个特殊的标识,用于匹配所有部分,方便全局样式的设置。 需要确认每个部分的具体应用场景,比如文本区域的各个组成部分,根据引用[2],主体、滚动条、选中文本、光标和占位符都是不同的部分。这里可能需要结合具体的部件例子来说明,比如滑块由主体、指示器和手柄组成。 同时,要注意引用的来源是否正确。比如引用[1]详细列出了各个部分的枚举值,引用[2]提到了文本区域的部件结构,这些都可以用来支持解释。另外,引用[4]中的translate_x属性可能和部件的位置调整有关,但当前问题主要关注各个部分的功能,可能不需要深入讨论样式属性。 用户可能还想知道如何在实际开发中使用这些部分,比如设置样式时选择正确的部分。比如,设置按钮按下时的样式,可能需要用到LV_STATE_PRESSED状态和对应的部分。这部分可以结合示例代码说明,但用户的问题主要是功能详解,可能不需要代码,但可以提到示例。 最后,生成相关问题时要考虑用户可能的后续疑问,比如如何自定义样式到不同部分,不同部件包含哪些部分,或者如何处理事件。确保问题覆盖用户可能感兴趣的扩展知识点。</think>### LVGL组成部分功能详解 #### 1. **LV_PART_MAIN(主体部分)** - **功能**:所有部件的核心区域,通常控制背景、边框、基础布局等属性。 - **用途**: - 按钮的背景、标签的底色、滑动条的轨道等[^1]。 - 文本输入框的基础区域(如占位符和未激活时的显示)[^2]。 - **示例**:设置按钮的圆角或背景色时,需作用于`LV_PART_MAIN`。 #### 2. **LV_PART_SCROLLBAR(滚动条)** - **功能**:控制滚动条的样式和交互逻辑。 - **用途**: - 列表(List)、页面(Page)等可滚动部件的滚动条。 - 支持动态调整滚动条宽度、颜色和透明度。 - **示例**:为下拉菜单的滚动条添加动画效果。 #### 3. **LV_PART_INDICATOR(指示器)** - **功能**:用于显示当前状态或进度。 - **用途**: - 进度条(Bar)的填充部分、开关(Switch)的激活状态标识。 - 滑块Slider)的当前位置标记。 - **示例**:设置进度条的填充颜色或滑块的指示线宽度。 #### 4. **LV_PART_KNOB(手柄/旋钮)** - **功能**:用户交互的直接操作部件- **用途**: - 滑块Slider)的拖动按钮、旋钮(Knob)的旋转部分。 - 支持自定义手柄形状(如圆形、方形)。 - **示例**:调整旋钮的尺寸或添加按压动画。 #### 5. **LV_PART_SELECTED(选中状态)** - **功能**:标记当前选中项或高亮区域。 - **用途**: - 表格(Table)的选中单元格、下拉列表(Dropdown)的已选选项。 - 文本输入框中被选中的文本区域。 - **示例**:修改选中文本的背景色或字体样式。 #### 6. **LV_PART_ITEMS(子项元素)** - **功能**:管理部件内重复生成的子元素。 - **用途**: - 列表(List)的每个选项、表格(Table)的单元格。 - 支持批量设置子项样式(如悬停效果)。 - **示例**:为列表项添加间隔线或悬停高亮。 #### 7. **LV_PART_CURSOR(光标)** - **功能**:控制输入设备的光标显示。 - **用途**: - 文本输入框(Textarea)的闪烁光标。 - 支持设置光标颜色、宽度和闪烁频率。 - **示例**:自定义光标的形状(如竖线或块状)。 #### 8. **LV_PART_CUSTOM_FIRST(自定义部分起点)** - **功能**:扩展自定义部件的专用区域。 - **用途**: - 开发者可为特定部件定义私有样式部分(如仪表盘刻度)。 - 需通过偏移值(如`LV_PART_CUSTOM_FIRST + n`)访问。 #### 9. **LV_PART_ANY(通用匹配)** - **功能**:匹配所有部件部分,用于全局样式设置。 - **用途**: - 批量修改所有部件的公共属性(如默认字体)[^1]。 - 谨慎使用,可能覆盖具体部件的特定样式。 --- ### 示例:文本输入框的组成部分[^2] ```c lv_obj_t *ta = lv_textarea_create(lv_scr_act()); // 设置主体背景色 lv_obj_set_style_bg_color(ta, lv_color_hex(0xEFEFEF), LV_PART_MAIN); // 设置滚动条宽度 lv_obj_set_style_width(ta, 5, LV_PART_SCROLLBAR); // 设置选中文本颜色 lv_obj_set_style_text_color(ta, lv_color_hex(0xFF0000), LV_PART_SELECTED); // 设置光标颜色 lv_obj_set_style_bg_color(ta, lv_color_hex(0x0000FF), LV_PART_CURSOR); ``` ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值