zl程序教程

您现在的位置是:首页 >  其它

当前栏目

LVGL V8之Event bubbling

Event V8 LVGL
2023-09-14 09:06:41 时间

按键事件处理


static void event_cb(lv_event_t* e)
{
    lv_obj_t* target = lv_event_get_target(e); //获取事件产生的对象
    lv_obj_t* cont = lv_event_get_current_target(e); //获取当前目标对象
    if (target == cont) return;  // 事件对象是当前的目标对象,不处理
   
    lv_obj_set_style_bg_color(target, lv_palette_main(LV_PALETTE_RED), 0); // 设置背景色
}

创建按键组

static void lv_example_event_3(void)
{
    lv_obj_t* cont = lv_obj_create(lv_scr_act()); // 创建obj对象
    lv_obj_set_size(cont, 290, 200); // 设置大小
    lv_obj_center(cont); // 居中显示
    lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP);//设置LV_FLEX_FLOW_ROW_WRAP布局
    uint32_t i;
    for (i = 0; i < 15; i++) {
        lv_obj_t* btn = lv_btn_create(cont); // 在obj对象上创建Button对象
        lv_obj_set_size(btn, 80, 50); //设置大小
        lv_obj_add_flag(btn, LV_OBJ_FLAG_EVENT_BUBBLE); //添加flag
        lv_obj_t* label = lv_label_create(btn); // 在Button对象上创建label对象
        lv_label_set_text_fmt(label, "%d", i); //设置显示内容
        lv_obj_center(label); //居中显示
    }
    lv_obj_add_event_cb(cont, event_cb, LV_EVENT_CLICKED, NULL); //添加clicked事件
}

效果图

在这里插入图片描述

  • 注释掉if (target == cont) return;
    在这里插入图片描述