lv_spinbox_create
用于创建微调框(Spinbox)控件的函数- lv_obj_t* lv_spinbox_create(lv_obj_t* parent);
- //parent:父对象指针
- //ret:指向创建的微调框对象的指针,若创建失败返回 NULL
复制代码 lv_spinbox_set_value
用于设置微调框(Spinbox)数值的函数- void lv_spinbox_set_value(lv_obj_t* spinbox, int32_t value);
- //spinbox:微调框对象指针
- //value:要设置的整数值,需根据微调框的数字格式转换为实际显示值
复制代码 lv_spinbox_set_rollover
设置微调框(Spinbox)数值循环模式的函数,允许数值在达到范围极限时自动跳转到另一端- void lv_spinbox_set_rollover(lv_obj_t* spinbox, bool enable);
- //spinbox:微调框对象指针
- //enable:true 启用循环模式,false 禁用(默认)
复制代码 lv_spinbox_set_digit_format
用于设置微调框(Spinbox)数字显示格式的函数,允许自定义数字位数、小数点位置等- void lv_spinbox_set_digit_format(lv_obj_t* spinbox, uint8_t digit_count, uint8_t separator_position);
- //spinbox:微调框对象指针
- //digit_count:总位数(不包括小数点分隔符和符号位)
- //separator_position:小数点前的位数。若为 0,则不显示小数点
复制代码 lv_spinbox_set_step
用于设置微调框(Spinbox)数值增减步长的函数,控制每次增减操作时的数值变化量- void lv_spinbox_set_step(lv_obj_t* spinbox, uint32_t step);
- //spinbox:微调框对象指针
- //step:步长值,必须是 10 的幂次方(如 1, 10, 100, 1000 等),对应修改的数字位数
复制代码 lv_spinbox_set_range
用于设置微调框(Spinbox)数值范围的函数,控制用户可输入或调整的最小值和最大值- void lv_spinbox_set_range(lv_obj_t* spinbox, int32_t min, int32_t max);
- //spinbox:微调框对象指针
- //min:允许的最小值(含)
- //max:允许的最大值(含)
复制代码 lv_spinbox_set_cursor_pos
用于设置微调框(Spinbox)光标位置的函数,允许用户指定当前编辑的数字位(从最低位开始计数)- void lv_spinbox_set_cursor_pos(lv_obj_t* spinbox, uint8_t pos);
- //spinbox:微调框对象指针
- //pos:光标位置索引,从右向左计数(0 表示最低位,即个位数)
复制代码 lv_spinbox_set_digit_step_direction
用于设置微调框(Spinbox)在编辑模式下光标移动方向的函数,尤其适用于编码器(Encoder)输入场景- void lv_spinbox_set_digit_step_direction(lv_obj_t* spinbox, lv_dir_t direction);
- //spinbox:微调框对象指针
- //direction:移动方向,可选值:
- //LV_DIR_RIGHT(默认):光标向右移动(从低位到高位)。
- //LV_DIR_LEFT:光标向左移动(从高位到低位)
复制代码 lv_spinbox_get_rollover
用于获取微调框(Spinbox)是否启用循环模式(Rollover)的函数- bool lv_spinbox_get_rollover(lv_obj_t* spinbox);
- //spinbox:微调框对象指针
- //ret:true:循环模式已启用(数值达到极限时会从另一端继续)。false:循环模式已禁用(数值达到极限时会停止变化)
复制代码 lv_spinbox_get_value
用于获取微调框(Spinbox)当前数值的函数,返回的是整数形式的原始值,用户需根据数字格式(如小数位数)自行转换为实际值- int32_t lv_spinbox_get_value(lv_obj_t* spinbox);
- //spinbox:微调框对象指针
- //ret:微调框的当前整数值,需结合 digit_format 转换为实际显示值
复制代码 lv_spinbox_get_step
用于获取微调框(Spinbox)当前步长(Step)的函数,返回的是整数形式的原始步长值,需根据数字格式(如小数位数)自行转换为实际步长- int32_t lv_spinbox_get_step(lv_obj_t* spinbox);
- //spinbox:微调框对象指针
- //ret:微调框的当前步长整数值,需结合 digit_format 转换为实际步长
复制代码 lv_spinbox_step_next
用于将微调框(Spinbox)的编辑光标移动到下一个低位数字的函数,同时自动调整步长(Step)为当前值的 1/10。- void lv_spinbox_step_next(lv_obj_t* spinbox);
- //spinbox:微调框对象指针
复制代码 lv_spinbox_step_prev
用于将微调框(Spinbox)的编辑光标移动到前一个高位数字的函数,同时自动调整步长(Step)为当前值的 10 倍- void lv_spinbox_step_prev(lv_obj_t* spinbox);
- //spinbox:微调框对象指针
复制代码 lv_spinbox_increment
用于增加微调框(Spinbox)数值的 API 函数,其核心功能是根据当前光标位置和步长对数值进行递增操作- void lv_spinbox_increment(lv_obj_t* spinbox);
- //spinbox:微调框对象指针
复制代码 lv_spinbox_decrement
用于减少微调框(Spinbox)数值的函数,其功能与 lv_spinbox_increment() 对应,但执行数值递减操作- void lv_spinbox_decrement(lv_obj_t* spinbox);
- ////spinbox:微调框对象指针
复制代码- // 定义一个全局变量,用于存储数值选择框(spinbox)对象
- static lv_obj_t * spinbox;
- // 定义一个回调函数,用于处理数值增加事件
- static void lv_spinbox_increment_event_cb(lv_event_t * e)
- {
- // 获取事件的类型
- lv_event_code_t code = lv_event_get_code(e);
- // 如果事件是短按或长按重复
- if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
- // 调用 LVGL 的函数,增加数值选择框的值
- lv_spinbox_increment(spinbox);
- }
- }
- // 定义一个回调函数,用于处理数值减少事件
- static void lv_spinbox_decrement_event_cb(lv_event_t * e)
- {
- // 获取事件的类型
- lv_event_code_t code = lv_event_get_code(e);
- // 如果事件是短按或长按重复
- if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
- // 调用 LVGL 的函数,减少数值选择框的值
- lv_spinbox_decrement(spinbox);
- }
- }
- /**
- * 创建一个带有自定义增减按钮的数值选择框
- */
- void lv_example_spinbox_1(void)
- {
- // 创建一个数值选择框对象,并将其添加到当前屏幕
- spinbox = lv_spinbox_create(lv_scr_act());
- // 设置数值选择框的范围:最小值为 -1000,最大值为 25000
- lv_spinbox_set_range(spinbox, -1000, 25000);
- // 设置数值选择框的数字格式:显示 5 位整数和 2 位小数
- lv_spinbox_set_digit_format(spinbox, 5, 2);
- // 将数值选择框的值设置为前一个步长
- lv_spinbox_step_prev(spinbox);
- // 设置数值选择框的宽度为 100 像素
- lv_obj_set_width(spinbox, 100);
- // 将数值选择框居中
- lv_obj_center(spinbox);
- // 获取数值选择框的高度
- lv_coord_t h = lv_obj_get_height(spinbox);
- // 创建一个按钮,用于增加数值
- lv_obj_t * btn = lv_btn_create(lv_scr_act());
- // 设置按钮的大小为数值选择框的高度
- lv_obj_set_size(btn, h, h);
- // 将按钮对齐到数值选择框的右侧中间,距离为 5 像素
- lv_obj_align_to(btn, spinbox, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
- // 设置按钮的背景图片为加号图标
- lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_PLUS, 0);
- // 为按钮添加事件回调函数,处理数值增加事件
- lv_obj_add_event_cb(btn, lv_spinbox_increment_event_cb, LV_EVENT_ALL, NULL);
- // 创建另一个按钮,用于减少数值
- btn = lv_btn_create(lv_scr_act());
- // 设置按钮的大小为数值选择框的高度
- lv_obj_set_size(btn, h, h);
- // 将按钮对齐到数值选择框的左侧中间,距离为 -5 像素
- lv_obj_align_to(btn, spinbox, LV_ALIGN_OUT_LEFT_MID, -5, 0);
- // 设置按钮的背景图片为减号图标
- lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_MINUS, 0);
- // 为按钮添加事件回调函数,处理数值减少事件
- lv_obj_add_event_cb(btn, lv_spinbox_decrement_event_cb, LV_EVENT_ALL, NULL);
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |