• 合宙Air724UG LuatOS-Air LVGL API控件-微调框 (Spinbox)


    微调框 (Spinbox)

    spinbox.png


    微调框用于数值调整,有时候我们希望获取一个用户输入的数值,但是又不希望弹出键盘,可以使用微调框。

    示例代码

    1. -- 回调函数
    2. function spinbox_increment_event_cb(obj, event)
    3. if event == lvgl.EVENT_SHORT_CLICKED then
    4. lvgl.spinbox_increment(spinbox)
    5. end
    6. end
    7. function spinbox_decrement_event_cb(obj, event)
    8. if event == lvgl.EVENT_SHORT_CLICKED then
    9. lvgl.spinbox_decrement(spinbox)
    10. end
    11. end
    12. -- 创建按钮
    13. function cBt(cont, txt, cb)
    14. local btn = lvgl.btn_create(cont, nil)
    15. lvgl.obj_set_event_cb(btn, cb)
    16. local label = lvgl.label_create(btn, nil)
    17. lvgl.label_set_text(label, txt)
    18. end
    19. -- 容器
    20. cont = lvgl.cont_create(lvgl.scr_act(), nil)
    21. lvgl.disp_load_scr(cont)
    22. lvgl.cont_set_fit(cont, lvgl.FIT_TIGHT)
    23. lvgl.obj_align(cont, nil, lvgl.ALIGN_CENTER, 0, 0)
    24. lvgl.cont_set_layout(cont, lvgl.LAYOUT_CENTER)
    25. -- 按钮一
    26. cBt(cont, "plus", spinbox_increment_event_cb)
    27. -- 微调框
    28. spinbox = lvgl.spinbox_create(cont, nil)
    29. lvgl.spinbox_set_range(spinbox, -1000, 25000)
    30. lvgl.spinbox_set_digit_format(spinbox, 5, 2)
    31. lvgl.spinbox_step_prev(spinbox)
    32. -- 按钮二
    33. cBt(cont, "minus", spinbox_decrement_event_cb)

    创建

    微调框的创建函数是 spinbox_create,创建也比较简单。

    spinbox = lvgl.spinbox_create(cont, nil)
    

    这里有点需要注意,创建的微调框只有这个:
     

    创建微调框.png


    增大减小按钮是需要自己通过代码创建的,所以上面的示例代码看起来比较多。示例创建的微调框是这个样子:

    示例微调框.png

    数值调整

    微调框的数值调整函数有两个,加一个单位lvgl.spinbox_increment,减一个单位lvgl.spinbox_decrement

    1. lvgl.spinbox_increment(spinbox)
    2. lvgl.spinbox_decrement(spinbox)

    lvgl.spinbox_set_range 可以设置微调框的数值显示范围,lvgl.spinbox_set_value 可以直接手动设置数值,lvgl.spinbox_set_step 是需要和上面的 lvgl.spinbox_incrementlvgl.spinbox_decrement两个函数配合使用的,增减的步长默认是 1,这个函数还是很有用的,我们可以把步长设置成 7,然后看看 1000 - 7 到底是多少。

    1. lvgl.spinbox_set_range(spinbox, 0, 1000)
    2. lvgl.spinbox_set_value(spinbox, 1000)
    3. lvgl.spinbox_set_digit_format(spinbox, 4, 0)
    4. lvgl.spinbox_set_step(spinbox, 7)

    jdfw3.gif

    格式

    通过函数 lvgl.spinbox_set_digit_format 可以设置微调框的数字显示格式,第一个参数是微调框的显示位数,是总位数。第二个参数是小数点前面的位数,0 表示没有小数点。除了位数显示,还可以在符号和数字之间添加空格 lvgl.spinbox_set_padding_left

    1. lvgl.spinbox_set_digit_format(spinbox, 8, 4)
    2. lvgl.spinbox_set_padding_left(spinbox, 3)

    图片.png

    事件

    数值更改时会有 lvgl.EVENT_VALUE_CHANGED 消息收到,但是结合一般微调框的使用方法,实际上都是对按钮添加回调,然后通过函数去更改微调框的数值。

    jdfw3.gif

    API

    lvgl.spinbox_create

    调用lvgl.spinbox_create(par, copy)
    功能创建一个微调框对象
    返回指向创建的微调框的指针
    参数
    par指向对象的指针, 它将是新键对象的父对象
    copy指向微调框对象的指针, 如果不为 nil, 则将从其复制新对象

    lvgl.spinbox_set_range

    调用lvgl.spinbox_set_range(spinbox, min, max)
    功能设置微调框的最小值和最大值
    参数
    spinbox指向微调框对象的指针
    min最小值
    max最大值

    lvgl.spinbox_set_range

    调用lvgl.spinbox_set_range(spinbox, val)
    功能设置微调框的数值
    参数
    spinbox指向微调框对象的指针
    val需要设置的数值

    lvgl.spinbox_set_digit_format

    调用lvgl.spinbox_set_digit_format(spinbox, count, pos)
    功能设置微调框数值格式
    参数
    spinbox指向微调框对象的指针
    count显示总位数
    pos小数点位置,也可以理解成整数位数,0 表示没有小数点。

    lvgl.spinbox_set_step

    调用lvgl.spinbox_set_step(spinbox, step)
    功能设置微调框的设置步长
    参数
    spinbox指向微调框对象的指针
    step需要设置的设置步长

    lvgl.spinbox_set_padding_left

    调用lvgl.spinbox_set_padding_left(spinbox, n)
    功能设置微调框的空格个数
    参数
    spinbox指向微调框对象的指针
    n符号位和数值之间空格的个数

    lvgl.spinbox_get_value

    调用lvgl.spinbox_get_value(spinbox)
    功能获取微调框的数值
    返回微调框的数值
    参数
    spinbox指向微调框对象的指针

    lvgl.spinbox_increment

    调用lvgl.spinbox_increment(spinbox)
    功能微调框的数值增加一个单位
    参数
    spinbox指向微调框对象的指针

    lvgl.spinbox_decrement

    调用lvgl.spinbox_decrement(spinbox)
    功能微调框的数值减小一个单位
    参数
    spinbox指向微调框对象的指针
  • 相关阅读:
    【工程师整活】Ai-WB1-A1S实现离线语音+APP+天猫精灵控制风扇
    博客摘录「 vue中调接口的方式:this.$api、直接调用、axios」2023年11月14日
    毕业进入HW,从测试工程师到项目经理,现如今在鹅厂年收入百万,我的给大家的一些建议...
    智能汽车的基础软件「竞速赛」
    mfc140u.dll丢失怎么修复?4种亲测有效的方法分享
    南京工业大学计算机考研资料汇总
    Vue-admin-template新增TagViews标签页功能,附完整代码
    2023年高教社杯全国大学生数学建模竞赛-【比赛规则篇】比赛规则及比赛指导
    Elasticsearch教程10】Mapping字段类型之数字Numbers
    vue在调用摄像头扫码(vue-qrcode-reader)
  • 原文地址:https://blog.csdn.net/l531798151/article/details/132745555