本文主要是介绍LVGL开发教程-按钮Button,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
系列文章目录
知不足而奋进 望远山而前行
目录
系列文章目录
文章目录
前言
1. 普通Button
2.可选中Button
3.按钮事件处理
总结
前言
在图形用户界面(GUI)开发中,按钮(Button)是用户与程序交互的重要组件之一。通过按钮,用户可以触发各种操作和事件,从而实现对应用程序的控制和导航。本文将介绍如何使用 LittlevGL 库创建普通按钮和可选中按钮,并实现它们的事件处理功能。
hi按钮Button是用户和程序的一种交互手段。
1. 普通Button
创建Button:
lv_obj_t * lv_btn_create(lv_obj_t * parent)
添加事件处理:
struct _lv_event_dsc_t * lv_obj_add_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb, lv_event_code_t filter,void * user_data)
参数1:按钮控件
参数2:回调函数
参数3:处理的事件
参数4:传递用户数据
示例代码:
void first_screen(){// 创建按钮lv_obj_t* btn = lv_btn_create(lv_scr_act());lv_obj_align(btn,LV_ALIGN_CENTER,0,0);// 创建按钮上的文本lv_obj_t* label = lv_label_create(btn);lv_label_set_text(label,"button");
}
2.可选中Button
void first_screen(){lv_obj_t * label;lv_obj_t * btn2 = lv_btn_create(lv_scr_act());lv_obj_align(btn2, LV_ALIGN_CENTER, 0, 0);//设置按钮可以被选中lv_obj_add_flag(btn2, LV_OBJ_FLAG_CHECKABLE);label = lv_label_create(btn2);lv_label_set_text(label, "Toggle");
}
3.按钮事件处理
普通按钮需要处理点击事件,可选中按钮需要处理选中状态切换事件。
添加事件处理:
struct _lv_event_dsc_t * lv_obj_add_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb, lv_event_code_t filter,void * user_data)
参数1:需要进行事件处理的object
参数2:事件处理回调函数
参数3:需要处理的事件
参数4:传递用户数据
普通按钮点击事件:
//事件回调函数
void event_handler(lv_event_t * e){int code = lv_event_get_code(e);lv_obj_t* obj = lv_event_get_target(e);if(code == LV_EVENT_CLICKED){lv_obj_t* label = lv_event_get_user_data(e);lv_label_set_text(label,"itheima");printf("clicked\n");}
}void first_screen(){lv_obj_t * label;lv_obj_t * btn1 = lv_btn_create(lv_scr_act());//给按钮设置点击事件处理lv_obj_add_event_cb(btn1, event_handler, LV_EVENT_CLICKED, NULL);...
}
可选中Button事件处理:
//事件回调
void event_handler(lv_event_t * e){lv_event_code_t code = lv_event_get_code(e);if(code==LV_EVENT_VALUE_CHANGED){printf("toggled btn\n");}
}void first_screen(){lv_obj_t * label;lv_obj_t * btn2 = lv_btn_create(lv_scr_act());lv_obj_add_event_cb(btn2, event_handler, LV_EVENT_VALUE_CHANGED, NULL);...
}
区分多个按钮事件:
多个按钮点击事件使用通过同一个回调函数处理时,可以在添加事件时通过user_data
参数区分
void event_handler(lv_event_t * e){lv_event_code_t code = lv_event_get_code(e);char *d = (char *)lv_event_get_user_data(e);if(code==LV_EVENT_CLICKED){if(strcmp(d,"btn1")==0){printf("click data1\n");}else if(strcmp(d,"btn2")==0){printf("click data2\n");}}
}void first_screen(){lv_obj_t * label;char *data1 = "btn1";char *data2 = "btn2";lv_obj_t * btn1 = lv_btn_create(lv_scr_act());...lv_obj_t * btn2 = lv_btn_create(lv_scr_act());lv_obj_add_event_cb(btn2, event_handler, LV_EVENT_CLICKED, data2);...
}
总结
本文详细讨论了在 LittlevGL 中创建和处理按钮的方法。首先,通过 lv_btn_create
函数创建了普通按钮和可选中按钮,并演示了如何在按钮上添加文本。其次,通过 lv_obj_add_event_cb
函数为按钮添加事件处理函数,区分了普通按钮的点击事件和可选中按钮的状态切换事件。最后,展示了如何通过 user_data
参数区分多个按钮的事件处理,使得同一事件处理函数可以应用于不同按钮,并根据需要执行不同的逻辑操作。通过本文的学习,读者可以掌握在 LittlevGL 中有效管理和操作按钮的关键技能,从而提升 GUI 应用程序的交互性和用户体验。
这篇关于LVGL开发教程-按钮Button的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!