事件(events)

LVGL中,当发生用户感兴趣的事情时,可以触发回调事件,以执行相关的操作

在这里插入图片描述

事件(events)相关API函数:

添加事件:lv_obj_add_event_cb(obj, event_cb, event_code, user_data);
event_cb:事件回调函数
event_code:事件类型
user_data:用户数据

删除事件:lv_obj_remove_event_cb(obj, event_cb);

在这里插入图片描述

回调函数

static void my_event_cb(lv_event_t * e)/* 第一步:获取事件类型 */
{
    lv_event_code_t code =lv_event_get_code(e);/* 第一步:获取事件类型 */
    if(code==LV_EVENT_CLICKED){/* 第二步:判断事件类型 */
    printf("LV_EVENT_CLICKED \n"); /* 第三步:执行相应操作 */
    }
    else if(code ==LV_EVENT_LONG_PRESSED)
    {
            printf("LV_EVENT_LONG_PRESSED\n");

    
}

案例程序

void my_gui(void)
{
lv_obj_t* switch1 = lv_obj_create(lv_scr_act());
lv_obj_add_event_cb(switch1,my_event_cb,LV_EVENT_CLICKED,NULL);
lv_obj_add_event_cb(switch1,my_event_cb,LV_EVENT_LONG_PRESSED,NULL);

不同的部件共用一个事件回调函数怎么处理?

#include "my_gui.h"
#include "lvgl.h"
lv_obj_t* switch1 ;  //声名全局变量
lv_obj_t* switch2 ;
static void my_event_cb(lv_event_t * e)  //回调
{
   // lv_event_code_t code =lv_event_get_code(e);
  lv_obj_t   *target = lv_event_get_target(e); /* 第一步:获取触发事件的部件 */
    if(target ==switch1){ /* 第二步:判断触发事件的部件 */
    printf("switch1 \n"); /* 第三步:执行相应操作 */
    }
    else if(target ==switch2)
    {
            printf("switch2\n");

    }

}

void my_gui(void)
{
 switch1 = lv_obj_create(lv_scr_act());
lv_obj_add_event_cb(switch1,my_event_cb,LV_EVENT_CLICKED,NULL);
//lv_obj_add_event_cb(switch1,my_event_cb,LV_EVENT_LONG_PRESSED,NULL);
lv_obj_set_size(switch1,300,300);

switch2 = lv_obj_create(lv_scr_act());
lv_obj_add_event_cb(switch2,my_event_cb,LV_EVENT_LONG_PRESSED,NULL);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值