LVGL-微调框
lv_spinbox_create用于创建微调框(Spinbox)控件的函数
lv_obj_t* lv_spinbox_create(lv_obj_t* parent);
//parent:父对象指针
//ret:指向创建的微调框对象的指针,若创建失败返回 NULLlv_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);
}
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]