找回密码
 立即注册
首页 业界区 科技 LVGL-微调框

LVGL-微调框

届表 2025-6-30 23:07:24
lv_spinbox_create

用于创建微调框(Spinbox)控件的函数
  1. lv_obj_t* lv_spinbox_create(lv_obj_t* parent);
  2. //parent:父对象指针
  3. //ret:指向创建的微调框对象的指针,若创建失败返回 NULL
复制代码
lv_spinbox_set_value

用于设置微调框(Spinbox)数值的函数
  1. void lv_spinbox_set_value(lv_obj_t* spinbox, int32_t value);
  2. //spinbox:微调框对象指针
  3. //value:要设置的整数值,需根据微调框的数字格式转换为实际显示值
复制代码
lv_spinbox_set_rollover

设置微调框(Spinbox)数值循环模式的函数,允许数值在达到范围极限时自动跳转到另一端
  1. void lv_spinbox_set_rollover(lv_obj_t* spinbox, bool enable);
  2. //spinbox:微调框对象指针
  3. //enable:true 启用循环模式,false 禁用(默认)
复制代码
lv_spinbox_set_digit_format

用于设置微调框(Spinbox)数字显示格式的函数,允许自定义数字位数、小数点位置等
  1. void lv_spinbox_set_digit_format(lv_obj_t* spinbox, uint8_t digit_count, uint8_t separator_position);
  2. //spinbox:微调框对象指针
  3. //digit_count:总位数(不包括小数点分隔符和符号位)
  4. //separator_position:小数点前的位数。若为 0,则不显示小数点
复制代码
lv_spinbox_set_step

用于设置微调框(Spinbox)数值增减步长的函数,控制每次增减操作时的数值变化量
  1. void lv_spinbox_set_step(lv_obj_t* spinbox, uint32_t step);
  2. //spinbox:微调框对象指针
  3. //step:步长值,必须是 10 的幂次方(如 1, 10, 100, 1000 等),对应修改的数字位数
复制代码
lv_spinbox_set_range

用于设置微调框(Spinbox)数值范围的函数,控制用户可输入或调整的最小值和最大值
  1. void lv_spinbox_set_range(lv_obj_t* spinbox, int32_t min, int32_t max);
  2. //spinbox:微调框对象指针
  3. //min:允许的最小值(含)
  4. //max:允许的最大值(含)
复制代码
lv_spinbox_set_cursor_pos

用于设置微调框(Spinbox)光标位置的函数,允许用户指定当前编辑的数字位(从最低位开始计数)
  1. void lv_spinbox_set_cursor_pos(lv_obj_t* spinbox, uint8_t pos);
  2. //spinbox:微调框对象指针
  3. //pos:光标位置索引,从右向左计数(0 表示最低位,即个位数)
复制代码
lv_spinbox_set_digit_step_direction

用于设置微调框(Spinbox)在编辑模式下光标移动方向的函数,尤其适用于编码器(Encoder)输入场景
  1. void lv_spinbox_set_digit_step_direction(lv_obj_t* spinbox, lv_dir_t direction);
  2. //spinbox:微调框对象指针
  3. //direction:移动方向,可选值:
  4. //LV_DIR_RIGHT(默认):光标向右移动(从低位到高位)。
  5. //LV_DIR_LEFT:光标向左移动(从高位到低位)
复制代码
lv_spinbox_get_rollover

用于获取微调框(Spinbox)是否启用循环模式(Rollover)的函数
  1. bool lv_spinbox_get_rollover(lv_obj_t* spinbox);
  2. //spinbox:微调框对象指针
  3. //ret:true:循环模式已启用(数值达到极限时会从另一端继续)。false:循环模式已禁用(数值达到极限时会停止变化)
复制代码
lv_spinbox_get_value

用于获取微调框(Spinbox)当前数值的函数,返回的是整数形式的原始值,用户需根据数字格式(如小数位数)自行转换为实际值
  1. int32_t lv_spinbox_get_value(lv_obj_t* spinbox);
  2. //spinbox:微调框对象指针
  3. //ret:微调框的当前整数值,需结合 digit_format 转换为实际显示值
复制代码
lv_spinbox_get_step

用于获取微调框(Spinbox)当前步长(Step)的函数,返回的是整数形式的原始步长值,需根据数字格式(如小数位数)自行转换为实际步长
  1. int32_t lv_spinbox_get_step(lv_obj_t* spinbox);
  2. //spinbox:微调框对象指针
  3. //ret:微调框的当前步长整数值,需结合 digit_format 转换为实际步长
复制代码
lv_spinbox_step_next

用于将微调框(Spinbox)的编辑光标移动到下一个低位数字的函数,同时自动调整步长(Step)为当前值的 1/10。
  1. void lv_spinbox_step_next(lv_obj_t* spinbox);
  2. //spinbox:微调框对象指针
复制代码
lv_spinbox_step_prev

用于将微调框(Spinbox)的编辑光标移动到前一个高位数字的函数,同时自动调整步长(Step)为当前值的 10 倍
  1. void lv_spinbox_step_prev(lv_obj_t* spinbox);
  2. //spinbox:微调框对象指针
复制代码
lv_spinbox_increment

用于增加微调框(Spinbox)数值的 API 函数,其核心功能是根据当前光标位置和步长对数值进行递增操作
  1. void lv_spinbox_increment(lv_obj_t* spinbox);
  2. //spinbox:微调框对象指针
复制代码
lv_spinbox_decrement

用于减少微调框(Spinbox)数值的函数,其功能与 lv_spinbox_increment() 对应,但执行数值递减操作
  1. void lv_spinbox_decrement(lv_obj_t* spinbox);
  2. ////spinbox:微调框对象指针
复制代码
  1. // 定义一个全局变量,用于存储数值选择框(spinbox)对象
  2. static lv_obj_t * spinbox;
  3. // 定义一个回调函数,用于处理数值增加事件
  4. static void lv_spinbox_increment_event_cb(lv_event_t * e)
  5. {
  6.     // 获取事件的类型
  7.     lv_event_code_t code = lv_event_get_code(e);
  8.     // 如果事件是短按或长按重复
  9.     if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
  10.         // 调用 LVGL 的函数,增加数值选择框的值
  11.         lv_spinbox_increment(spinbox);
  12.     }
  13. }
  14. // 定义一个回调函数,用于处理数值减少事件
  15. static void lv_spinbox_decrement_event_cb(lv_event_t * e)
  16. {
  17.     // 获取事件的类型
  18.     lv_event_code_t code = lv_event_get_code(e);
  19.     // 如果事件是短按或长按重复
  20.     if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
  21.         // 调用 LVGL 的函数,减少数值选择框的值
  22.         lv_spinbox_decrement(spinbox);
  23.     }
  24. }
  25. /**
  26. * 创建一个带有自定义增减按钮的数值选择框
  27. */
  28. void lv_example_spinbox_1(void)
  29. {
  30.     // 创建一个数值选择框对象,并将其添加到当前屏幕
  31.     spinbox = lv_spinbox_create(lv_scr_act());
  32.     // 设置数值选择框的范围:最小值为 -1000,最大值为 25000
  33.     lv_spinbox_set_range(spinbox, -1000, 25000);
  34.     // 设置数值选择框的数字格式:显示 5 位整数和 2 位小数
  35.     lv_spinbox_set_digit_format(spinbox, 5, 2);
  36.     // 将数值选择框的值设置为前一个步长
  37.     lv_spinbox_step_prev(spinbox);
  38.     // 设置数值选择框的宽度为 100 像素
  39.     lv_obj_set_width(spinbox, 100);
  40.     // 将数值选择框居中
  41.     lv_obj_center(spinbox);
  42.     // 获取数值选择框的高度
  43.     lv_coord_t h = lv_obj_get_height(spinbox);
  44.     // 创建一个按钮,用于增加数值
  45.     lv_obj_t * btn = lv_btn_create(lv_scr_act());
  46.     // 设置按钮的大小为数值选择框的高度
  47.     lv_obj_set_size(btn, h, h);
  48.     // 将按钮对齐到数值选择框的右侧中间,距离为 5 像素
  49.     lv_obj_align_to(btn, spinbox, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
  50.     // 设置按钮的背景图片为加号图标
  51.     lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_PLUS, 0);
  52.     // 为按钮添加事件回调函数,处理数值增加事件
  53.     lv_obj_add_event_cb(btn, lv_spinbox_increment_event_cb, LV_EVENT_ALL, NULL);
  54.     // 创建另一个按钮,用于减少数值
  55.     btn = lv_btn_create(lv_scr_act());
  56.     // 设置按钮的大小为数值选择框的高度
  57.     lv_obj_set_size(btn, h, h);
  58.     // 将按钮对齐到数值选择框的左侧中间,距离为 -5 像素
  59.     lv_obj_align_to(btn, spinbox, LV_ALIGN_OUT_LEFT_MID, -5, 0);
  60.     // 设置按钮的背景图片为减号图标
  61.     lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_MINUS, 0);
  62.     // 为按钮添加事件回调函数,处理数值减少事件
  63.     lv_obj_add_event_cb(btn, lv_spinbox_decrement_event_cb, LV_EVENT_ALL, NULL);
  64. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册