目录
一、部件组成
主体(LV_PART_MAIN)
光标(LV_PART_CURSOR)
二、部件操作
1、创建
lv_obj_t *spinbox = lv_spinbox_create(parent);
2、数值操作
lv_spinbox_increment(spinbox); /* 递增 */
lv_spinbox_decrement(spinbox); /* 递减 */
3、设置步进值,范围值
lv_spinbox_set_step(spinbox, 200); /* 设置步进值,默认为1*/
lv_spinbox_set_range(spinbox, -1000, 1000); /* 设置范围值,默认±99999*/
4、设置当前值
lv_spinbox_set_value(spinbox, 400);
5、设置格式与光标位置
lv_spinbox_set_digit_format(spinbox, 4, 2); /* 设置数字位数、小数点位置 */
lv_spinbox_set_pos(spinbox, 3); /* 设置光标位置 */
6、获取当前值
lv_spinbox_get_value(spinbox); /* 返回值为整数,而非小数 */
三、项目案例
#include "mygui.h"
#include "lvgl.h"
#include <stdio.h>
#include <stdbool.h>
/* 获取当前活动屏幕的宽高 */
#define scr_act_width() lv_obj_get_width(lv_scr_act())
#define scr_act_height() lv_obj_get_height(lv_scr_act())
static const lv_font_t *font; /* 定义字体 */
static lv_obj_t *spinbox; /* 微调器 */
static lv_obj_t *btn_up; /* 递增按钮 */
static lv_obj_t *btn_down; /* 递减按钮 */
static void btn_event_cb(lv_event_t *e)
{
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if (target == btn_up) /* 递增按钮按下 */
{
lv_spinbox_increment(spinbox); /* 数值递增 */
}
else if (target == btn_down) /* 递减按钮按下 */
{
lv_spinbox_decrement(spinbox); /* 数值递减 */
}
}
static void spinbox_event_cb(lv_event_t *e)
{
float spinbox_value; /* 微调器当前值 */
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
if(code == LV_EVENT_VALUE_CHANGED)
{
spinbox_value= (float)lv_spinbox_get_value(spinbox);
printf("%.1f\r\n", spinbox_value/10);
}
}
void lv_spinbox(void)
{
/* 微调器 */
spinbox = lv_spinbox_create(lv_scr_act()); /* 创建微调器 */
lv_spinbox_set_range(spinbox, -10000, 10000); /* 设置范围值 */
lv_spinbox_set_digit_format(spinbox, 5, 4); /* 设置数字格式 */
lv_obj_set_size(spinbox, 100, 30); /* 设置大小 */
lv_obj_center(spinbox); /* 设置位置 */
lv_obj_update_layout(spinbox); /* 更新布局 */
lv_obj_set_style_text_font(spinbox, &lv_font_montserrat_12, LV_PART_MAIN); /* 设置字体 */
lv_obj_set_style_text_align(spinbox, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN); /* 设置文本对齐方式 */
lv_obj_add_event_cb(spinbox, spinbox_event_cb, LV_EVENT_VALUE_CHANGED, NULL); /* 添加事件回调 */
/* 递增按钮 */
btn_up = lv_btn_create(lv_scr_act()); /* 创建按钮 */
lv_obj_set_size(btn_up, 20, 20); /* 设置大小 */
lv_obj_align_to(btn_up, spinbox, LV_ALIGN_OUT_LEFT_MID, -5, 0); /* 设置位置 */
lv_obj_set_style_bg_img_src(btn_up, LV_SYMBOL_PLUS, LV_PART_MAIN); /* 设置背景图标 */
lv_obj_add_event_cb(btn_up, btn_event_cb, LV_EVENT_CLICKED, NULL); /* 添加事件回调 */
/* 递减按钮 */
btn_down = lv_btn_create(lv_scr_act()); /* 创建按钮 */
lv_obj_set_size(btn_down, 20, 20); /* 设置大小 */
lv_obj_align_to(btn_down, spinbox, LV_ALIGN_OUT_RIGHT_MID, 5, 0); /* 设置位置 */
lv_obj_set_style_bg_img_src(btn_down, LV_SYMBOL_MINUS, LV_PART_MAIN); /* 设置背景图标 */
lv_obj_add_event_cb(btn_down, btn_event_cb, LV_EVENT_CLICKED, NULL); /* 添加事件回调 */
}
void my_gui(void)
{
lv_spinbox();
}