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;
相关文章
- swoole_event_add实现异步
- [XState] raise event: trigger an action immediately when reach target state
- [HTML 5] Understanding DOM loading event & 'async', 'defer' keyword
- [Reactive Programming] Using an event stream of double clicks -- buffer()
- [Javascript] event.target.closest(selector)
- [Angular] The Select DOM Event and Enabling Text Copy
- support mobile touch event
- Atitit vod click event design flow 视频点播系统点击事件文档
- 给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
- SAP Event Mesh 简介
- bubble click event handling
- Qt5中event事件的传递
- Python编程:多线程中的event