银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-12-3 | yang | 初次建立 |
复选框对象是以按钮的背景构建的,按钮背景还包含选择框和标签,以实现一个经典的复选框。
复选框的主要部分称为 LV_CHECKBOX_PART_BG 。它是选择框和标签的容器。背景使用所有典型的背景样式属性。
选择框是一个 lv_obj 对象,可以被 LV_CHECKBOX_PART_BULLET 刷新。选择框会自动继承背景的状态,因此,背景被按下时,选择框也会进入按下状态。
标签没有专用部分。由于文本样式属性也是继承背景的,因此可以在背景样式中设置其样式。
void lv_gui_run(void){ lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ lv_obj_t * cb = lv_checkbox_create(lv_scr_act(), NULL); lv_checkbox_set_text(cb, "this is a checkbox"); lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0); }
用户可以通过函数 lv_checkbox_set_text(cb, “New text”) 修改复选框文本,它将动态分配文本。
若要设置静态文本,请使用 lv_checkbox_set_static_text(cb, txt) 。这样,将仅存储文本的指针,并且复选框存在时LVGL不释放该指针。
用户可以通过函数 lv_checkbox_set_checked(cb, true/false) 手动选中/取消选中复选框。设置 true 将选中该复选框,而 false 将取消选中该复选框。
要禁用复选框,请使用 lv_checkbox_set_disabled(cb) 。
用户可以使用函数 lv_checkbox_get_state(cb) 获取当前复选框的状态,也可以使用 lv_checkbox_set_state(cb, state) 设置复选框的当前状态。可用状态 lv_btn_state_t 有以下几种类型:
除了常规事件外,复选框还发送以下特殊事件:
请注意,在非活动状态下与通用输入设备相关的事件(如 LV_EVENT_PRESSED )也会被发送。因此用户需要通过 lv_cb_is_inactive(cb) 检查复选框状态,以忽略非活动复选框中的事件。
static void event_handler(lv_obj_t * obj, lv_event_t event) /* 回调函数 */ { if(event == LV_EVENT_VALUE_CHANGED) { if(lv_checkbox_is_checked(obj) == true){ /* 判断状态 */ lv_label_set_text(label, "Checked"); /* 更新标签内容 */ }else{ lv_label_set_text(label, "Unchecked"); } } } void lv_gui_run(void){ lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ lv_obj_t * cb = lv_checkbox_create(lv_scr_act(), NULL); /* 创建复选框 */ lv_checkbox_set_text(cb, "I agree to terms and conditions.");/* 设置复选框文本 */ lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0); /* 设置复选框位置 */ lv_obj_set_event_cb(cb, event_handler); /* 设置复选框回调函数 */ label = lv_label_create(lv_scr_act(), NULL); /* 创建标签 */ lv_label_set_text(label, "Unchecked"); lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 30); }