用户工具

站点工具


icore4tlvgl_13
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-12-3 yang 初次建立

实验十三:lv_cb复选框

一、复选框

复选框对象是以按钮的背景构建的,按钮背景还包含选择框和标签,以实现一个经典的复选框。

复选框的主要部分称为 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_BTN_STATE_RELEASED
  • LV_BTN_STATE_PRESSED
  • LV_BTN_STATE_DISABLED
  • LV_BTN_STATE_CHECKED_RELEASED
  • LV_BTN_STATE_CHECKED_PRESSED
  • LV_BTN_STATE_CHECKED_DISABLED

六、事件

除了常规事件外,复选框还发送以下特殊事件:

  • LV_EVENT_VALUE_CHANGED - 切换复选框时发送。

请注意,在非活动状态下与通用输入设备相关的事件(如 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);
}
icore4tlvgl_13.txt · 最后更改: 2022/04/01 11:13 由 sean