事件
事件
当LVGL发生某些用户可能感兴趣的事件时,系统做出相应的响应。实际上根据具体情况调用相应的回调函数。STM32的中断也可看成是一种事件
LVGL中的事件包括以下几类:
输入设备事件(Input device events):对象被按下、滚动、聚焦….
绘图事件(Drawing events)
其他事件(Special events):对象被删除、样式等被更改…..
特殊事件(Other events):对象的值被更改(滑块移动)、一个过程完成
自定义事件(Custom events)
具体的看官方文档
1.给对象添加事件
1 | static void my_event_cb(lv_event_t * event) |
- 在示例中
LV_EVENT_CLICKED
意味着只有当对象发生点击事件时,就会触发事件从而进入事件处理回调函数my_event_cb
2.回调函数写法
回调函数必须声明/定义成void fun(lv_event_t* envent)
这样的
lv_event_t
是传递给事件回调的唯一参数,它包含有关事件的所有数据。可以从中获得以下值:
lv_event_get_code(e)
获取触发的事件代码lv_event_get_target(e)
获取触发事件的对象lv_event_get_original_target(e)
获取事件最初发送到的对象(与lv_event_get_target
不同,如果 event bubbling 被启用)lv_event_get_user_data(e)
获取作为lv_obj_add_event_cb
的最后一个参数传递的指针。lv_event_get_param(e)
获取作为lv_event_send
的最后一个参数传递的参数
1 | void btn_event_cb(lv_event_t* envent) |
3.事件的删除
可以使用 lv_obj_remove_event_cb(obj, event_cb)
或 lv_obj_remove_event_dsc(obj, event_dsc)
从对象中删除事件。
event_dsc
是一个由 lv_obj_add_event_cb
返回的指针。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.