LVGL开发教程-按钮Button

2024-06-19 23:12
文章标签 教程 开发 按钮 lvgl button

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076417

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,