首页 > 其他分享 >LVGL 控件之滑动条(lv_slider)

LVGL 控件之滑动条(lv_slider)

时间:2024-09-15 13:20:41浏览次数:13  
标签:控件 set 滑块 部件 lv slider LV LVGL

目录


一、概述

滑动条对象看起来像是在 进度条 增加了一个可以调节的旋钮,使用时可以通过拖动旋钮来设置一个值。 就像进度条(bar)一样,Slider 可以是垂直的或水平的(当设置进度条的宽度小于其高度,就可以创建出垂直摆放的滑动条)。

滑块部件由三个部分组成:主体背景、指示器和旋钮,示意图如下:

  • LV_PART_MAIN 滑动条的背景。 使用所有典型的背景样式属性。 设置 padding 样式会使指标在相应方向上变小。
  • LV_PART_INDICATOR 显示滑动条当前状态的指示器。 也是使用所有典型的背景样式属性。
  • LV_PART_KNOB 旋钮(可以是原形或矩形)。 也是使用所有典型的背景属性。 默认情况下,旋钮是方形的(带有可选的圆角半径),边长等于滑动条的较小边。 可以通过设置 padding 样式调整旋钮的大小。 填充值也可以是不对称的。

二、滑块

1、设置滑块当前值和范围值

默认情况下,滑块部件被创建出来后,它的当前值是 0,范围值是 0~100

  • 如果用户需要设置当前值,可调用 lv_slider_set_value 函数。
  • 如果用户需要设置范围值,可以调用 lv_slider_set_range 函数。

在水平模式下默认绘制方向为从左到右,并且垂直模式下从下到上。如果最小值大于最大值,如 100~0 时,绘制方向变为相反的方向。

lv_obj_t* slider = lv_slider_create(lv_scr_act());

lv_slider_set_range(slider,0,255);            /* 设置slider 部件范围值 */
lv_slider_set_value(slider,100, LV_ANIM_ON);  /* 设置slider 部件当前值 */

lv_obj_center(slider);

2、设置滑块部件的模式

除了默认的模式之外,滑块部件还可以配置为以下两种拓展模式:

  1. LV_SLIDER_MODE_SYMMETRICAL:无论当前值是正数还是负数,指示器始终从零绘制到当前值。
  2. LV_SLIDER_MODE_RANGE:允许调用lv_bar_set_start_value 函数设置起始值,该起始值必须小于结束值。

用户需要设置滑块部件的模式,可调用以下函数:

lv_slider_set_mode(slider, LV_SLIDER_MODE_…);

lv_obj_t* slider = lv_slider_create(lv_scr_act());

lv_slider_set_mode(slider, LV_SLIDER_MODE_SYMMETRICAL);  /* 设置slider 部件模式:始终从0 开始绘制指示器 */
lv_slider_set_range(slider,-100,100);                    /* 设置slider 部件数值范围 */
lv_obj_center(slider);


lv_obj_t* slider1 = lv_slider_create(lv_scr_act());

lv_slider_set_mode(slider1, LV_SLIDER_MODE_RANGE);  /* 创建slider1 部件模式:允许指定起始值 */
lv_bar_set_start_value(slider1,0,LV_ANIM_OFF);      /* 创建slider1 部件起始值 */
lv_slider_set_range(slider1, -100, 100);            /* 创建slider1 部件数值范围 */
lv_obj_align_to(slider1, slider,LV_ALIGN_OUT_BOTTOM_MID,0,30);

由上图可知:

  • LV_SLIDER_MODE_SYMMETRICAL 模式下,滑块始终是从 0 点开始绘制指示器;
  • 而在 LV_SLIDER_MODE_RANGE 模式下,滑块部件可以改变起始值,值得注意的是,起始值必须小于结束值(当前值)

3、禁用单击

默认情况下,用户可以通过拖动旋钮或者单击滑块的方式来调整指示器位置,而后者可能会导致当前值的突变,这在某些情景下是不允许出现的。如果用户想禁用单击调整当前值,可调用以下函数:

lv_obj_add_flag(slider, LV_OBJ_FLAG_ADV_HITTEST);

4、事件

  • LV_EVENT_VALUE_CHANGED 在拖动滑块或用键更改。当滑块处于被拖拽。
  • LV_EVENT_RELEASED 在刚刚释放滑块时发送。

void slider_event_cb(lv_event_t *e)
{
    printf("释放按钮\r\n");
}

void my_gui(void) {
    lv_obj_t* slider = lv_slider_create(lv_scr_act());

    lv_slider_set_range(slider,1,255);            /* 设置slider 部件范围值 */
    lv_slider_set_value(slider,100, LV_ANIM_ON);  /* 设置slider 部件当前值 */
    lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL); 

    lv_obj_center(slider);
}

5、API 函数

函数描述
lv_slider_create()创建滑块部件
lv_slider_set_value()设置当前值
lv_slider_set_left_value()设置左侧旋钮的值
lv_slider_set_range()设置范围值
lv_slider_set_mode()设置模式
lv_slider_get_value()获取当前值
lv_slider_get_left_value()获取左侧旋钮的值
lv_slider_get_min_value()获取最小值
lv_slider_get_max_value()获取最大值
lv_slider_is_dragged()判断滑块是否被拖动
lv_slider_get_mode()获取滑块部件模式

标签:控件,set,滑块,部件,lv,slider,LV,LVGL
From: https://blog.csdn.net/Teminator_/article/details/142204889

相关文章

  • LVGL 控件之列表(lv_list)
    目录一、概述二、列表1、添加列表按钮2、设置列表文本3、API函数一、概述List(列表)基本上是一个垂直布局的矩形,按钮指向该矩形并且可以添加文本。列表部件由两个部分组成:LV_PART_MAIN使用所有典型背景属性的列表的主要部分LV_PART_SCROLLBAR滚动条。二、列表......
  • 使用soui4实现一个拾色器控件
    拾色器拾色器类#pragmaonceclassCClrPickerCtrl:publicSWindow{ DEF_SOBJECT(SWindow,L"clrpicker")public: CClrPickerCtrl(void); ~CClrPickerCtrl(void); //跟solider控件设置色调 voidSetSliderPos(intnPos); //获取选取位置的颜色 COLORREF......
  • 一款类excel可进行显示、在线编辑的纯js表格TableShow控件
        在进行前端显示设计时,传统的方法是以分页显示,逐条提取后修改及保存,非常不利于用户连贯阅读及在线修改。因此,本人将类似excel的一些table表格在线卷动显示、修改及集中保存功能进行了尝试,封装成了一个纯js控件,只通过一句代码进行调用,将数据库查询结果集进行显示和添......
  • 实现 Excel 文件导入到向量数据库(Milvus),并支持 先查询知识库(Milvus),然后再查询大模型(Ol
    为了实现Excel文件导入到向量数据库(Milvus),并支持先查询知识库(Milvus),然后再查询大模型(Ollama)的功能,以下是具体的实现步骤:1.导入Excel数据到向量数据库(Milvus)首先,您需要将Excel文件中的数据向量化,并将这些向量导入到Milvus数据库中。可以使用pandas读取Excel文件,使用......
  • QtDesigner控件提升为自定义控件
    创建自定义控件classMyTextEdit(QTextEdit):fanYi=Signal(str,QPoint)def__init__(self,parent=None):super(MyTextEdit,self).__init__(parent)#指定菜单self.setContextMenuPolicy(Qt.CustomContextMenu)#连接菜单函......
  • .NET 多版本 WinForm 开源控件库 SunnyUI
    合集-.NET开源工具(15) 1..NET开源快捷的数据库文档查询和生成工具07-312..NET结果与错误处理利器FluentResults08-013..NET+WPF桌面快速启动工具GeekDesk08-194.Gradio.NET支持.NET8简化Web应用开发08-265..NET开源实时监控系统-WatchDog08-276.实用接地......
  • demo:tvm优化resnet50 llvm后端cpu上推理
    这是一个完整的例子。使用预训练的resnet50模型,经过tvm优化调整,target=llvm,在cpu上进行推理。最后打印结果是1这个索引代表goldfish importonnxfromtvm.contrib.downloadimportdownload_testdatafromPILimportImageimportnumpyasnpimporttvm.relayasrel......
  • RK3399主板上GM8775C MIPI转LVDS调试
    在开发项目中,笔者需要用一个MPU驱动一个1280x1024的双路LVDS液晶屏,不巧的是这颗MPU硬件上仅支持TTLRGB接口和MIPI接口,没有现成的LVDS接口。一开始是尝试使用THC63LVD827将TTLRGB转成双路LVDS驱动液晶屏,但是发现该MPU的TTLRGB接口最高只能驱动1280x76860fps显示。无奈只能从......
  • LVDS眼图eys diagram测试
    LVDS概述数字设计人员利用低压差分信号(LVDS)进行高速数据传输。LVDS提供更高的比特率、更低的功耗和更好的噪声性能由于互联网的巨大增长,数据传输在所有通信领域都在急剧增加。此外,数字视频、高清电视和彩色图形的数据流需要越来越高的带宽。数字通信洪流是芯片、功能板和系统......
  • 旋转按钮—C#自定义控件1
    C#自定义控件—旋转按钮 C#用户控件之旋转按钮按钮功能:手自动旋转,标签文本显示、点击二次弹框确认(源码在最后边);【制作方法】找到控件的中心坐标,画背景外环、内圆;再绘制矩形开关,进行角度旋转即可获得;【关键节点】No.1获取中心坐标,思考要绘制图形的相对坐标、宽度......