当前位置: 首页 > article >正文

LVGL添加事件和删除事件

1添加事件

使用如下函数添加事件

void lv_obj_add_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb, lv_event_code_t filter, void * user_data)
  • lv_obj_t * obj: 控件对象的指针。
  • lv_event_cb_t event_cb: 指向事件回调函数的指针。当指定的事件发生时,这个函数会被调用。
  • lv_event_code_t filter: 事件过滤器(什么事件),它指定了这个回调函数对哪些事件感兴趣。如果设置了过滤器,则只有当事件代码与过滤器匹配时,回调函数才会被调用。如果不需要过滤,可以使用 LV_EVENT_ALL,这样所有的的事件都会触发回调。
  • void * user_data: 用户数据指针,可以传递任何你需要的数据到事件回调函数。在回调函数中,这个指针可以通过 lv_event_get_user_data() 函数获取。

 有什么事件(第三个参数)

常见的事件类型:

LV_EVENT_PRESSED: 当对象被按下时触发。
LV_EVENT_PRESSING: 当对象正在被按下时重复触发。
LV_EVENT_PRESS_LOST: 当用户在按下对象后移动到对象外面时触发。
LV_EVENT_SHORT_CLICKED: 当对象被按下并快速释放时触发(通常视为点击)。
LV_EVENT_LONG_PRESSED: 当对象被长时间按下时触发。
LV_EVENT_LONG_PRESSED_REPEAT: 当对象被长时间按下并且重复触发时触发。
LV_EVENT_CLICKED: 当对象被点击时触发(无论点击时间长短)。
LV_EVENT_RELEASED: 当对象被释放时触发。
LV_EVENT_DRAG_BEGIN: 当拖动操作开始时触发。
LV_EVENT_DRAG_END: 当拖动操作结束时触发。
LV_EVENT_DRAG_THROW_BEGIN: 当拖动并释放后,对象开始惯性移动时触发。
LV_EVENT_KEY: 当键盘或编码器有键被按下时触发。
LV_EVENT_FOCUSED: 当对象获得焦点时触发。
LV_EVENT_DEFOCUSED: 当对象失去焦点时触发。
LV_EVENT_VALUE_CHANGED: 当对象的值改变时触发(例如,滑块的值改变)。
LV_EVENT_INSERT: 当文本框中插入文本时触发。
LV_EVENT_APPLY: 当应用按钮被按下时触发。
LV_EVENT_CANCEL: 当取消按钮被按下时触发。
LV_EVENT_DELETE: 当对象被删除时触发。
LV_EVENT_REFRESH: 当对象需要刷新时触发。
LV_EVENT_SCROLL_BEGIN: 当滚动开始时触发。
LV_EVENT_SCROLL_END: 当滚动结束时触发。
LV_EVENT_SCROLL: 当对象正在滚动时触发。
LV_EVENT_SCROLL_THROW_BEGIN: 当滚动并释放后,对象开始惯性滚动时触发。

实例

//回调函数
void button_event_cb(lv_event_t * e) {
    if(lv_event_get_code(e) == LV_EVENT_CLICKED) {
        printf("Button was clicked!\n");
    }
}

lv_obj_t * btn = lv_btn_create(lv_scr_act());  /* 创建一个按钮 */
lv_obj_add_event_cb(btn, button_event_cb, LV_EVENT_CLICKED, NULL);  /* 添加事件回调 */

 

2删除事件

要从对象中删除事件,可以使用以下两个函数之一:

  • lv_obj_remove_event_cb(obj, event_cb):通过回调函数删除事件。
  • lv_obj_remove_event_dsc(obj, event_dsc):通过事件描述符删除事件。event_dsc 是在执行 lv_obj_add_event_cb 时所用的参数

方法1,移除回调函数

 /* 'btn'为控件的对象    event_handler回调函数*/
    lv_obj_remove_event_cb(btn, event_handler); /* 删除点击事件的回调 */

方法2,移除其创建的事件(一般上面一个就够用了)

 /* 创建一个按钮 */
    lv_obj_t * btn = lv_btn_create(lv_scr_act());

    /* 添加事件回调,并获取事件描述符 */
    lv_event_dsc_t * event_dsc = lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_CLICKED, NULL);

    /* 在某个时刻,我们想要移除特定的事件描述符 */
    /*btn :控件对象, event_dsc :添加事件函数的对象*/
    lv_obj_remove_event_dsc(btn, event_dsc);


http://www.kler.cn/a/373942.html

相关文章:

  • 每日新闻掌握【2024年10月24日 星期四】
  • 【原创分享】JVM服务调优实战
  • Kaggle “Reducing Commercial Aviation Fatalities” 比赛 生理数据分析
  • 新需求编码如何注意低级错误代码
  • UV紫外相机
  • CentOS8.5.2111(4.1)数据中心主DNS部署
  • 一年期免费HTTPS证书:网络安全新选择
  • Docker环境安装MySQL
  • ubuntu交叉编译libffi库给arm平台使用
  • Jenkins Pipeline 部署总结
  • 爬虫笔记22——当当网图书详情页静、动态数据爬取
  • leetcode day7 442
  • 6. 线程池实现
  • 如何安装和使用PowerDesigner
  • TDengine 数据订阅 vs. InfluxDB 数据订阅:谁更胜一筹?
  • ETLCloud遇上MongoDB:灵活数据流,轻松管理
  • 四、k8s快速入门之Kubernetes资源清单
  • 忘记无线网络密码的几种解决办法
  • 【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)
  • vue中el-table显示文本过长提示
  • 函数的调用
  • vue2和vue3的数据双向绑定差异整理
  • PPT制作新选择:本地部署PPTist结合内网穿透实现实时协作和远程使用
  • 【java batik_使用BATIK解析SVG生成PNG图片】
  • 数字普惠金融-工具变量(2024.2更新)
  • ubuntu 给终端设置代理