目的
学习使用复选框。
功能描述
同其他ui的复选框一样,littlevGL也提供了一个复选框功能。用户可以配置复选框的风格,文本,以及事件回调的应答任务。
控件创建步骤及函数
创建步骤
用户可以创建一个复选框对象,并配置对应的文本。此文本不能是局部变量。可配置复选框的初始状态,是否有效,以及风格和对应事件。
函数
-
控件创建
lv_obj_t *lv_cb_create(lv_obj_t *par, constlv_obj_t *copy)
-
设置控件文本
void lv_cb_set_text(lv_obj_t *cb, const char *txt)//指向动态的
void lv_cb_set_static_text(lv_obj_t *cb, const char *txt)//静态的
const char *lv_cb_get_text(constlv_obj_t *cb)
-
设置控件的选择状态
static void lv_cb_set_checked(lv_obj_t *cb, bool checked)//控制控件选取状态
static bool lv_cb_is_checked(constlv_obj_t *cb)
-
是否使能控件
static void lv_cb_set_inactive(lv_obj_t *cb)//设置控件无效
static bool lv_cb_is_inactive(constlv_obj_t *cb)
-
配置控件风格
void lv_cb_set_style(lv_obj_t *cb, lv_cb_style_ttype, const lv_style_t *style)
LV_CB_STYLE_BG Background style. Uses all style.body properties. The label’s style comes from style.text. Default: lv_style_transp
LV_CB_STYLE_BOX_REL Style of the released box. Uses the style.body properties. Default: lv_style_btn_rel
LV_CB_STYLE_BOX_PR Style of the pressed box. Uses the style.body
LV_CB_STYLE_BOX_INA Style of the inactive box. Uses the style.body properties. Default: lv_style_btn_ina
const lv_style_t *lv_cb_get_style(constlv_obj_t *cb, lv_cb_style_ttype)
-
事件
lv_obj_set_event_cb(cb, event_handler)
LV_EVENT_VALUE_CHANGED//事件类型
案例和代码
实现一个复选框,配置其事件,打印当前按下和释放的状态。
#include "ljy_check.h"
#include "lvgl/lvgl.h"
#include <stdio.h>
static void CheckBoxEventCb(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
printf("State: %s\n", lv_cb_is_checked(obj) ? "Checked" : "Unchecked");
lv_cb_is_checked(obj)? lv_cb_set_text(obj, "OK"):lv_cb_set_text(obj, "unok");//切换txt
}
}
void DrawCheckBox()
{
//1. 创建一个cb0
lv_obj_t * cb = lv_cb_create(lv_scr_act(), NULL);
//2. 配置文本
lv_cb_set_text(cb, "Agree");
//3. 显示中心
lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0);
//4. 回调事件
lv_obj_set_event_cb(cb, CheckBoxEventCb);
}
结论
初始界面
操作界面