LVGL部件4

news2024/11/27 10:21:25

一.列表部件

1.知识概览

在这里插入图片描述

在这里插入图片描述

2.函数接口

1.lv_list_add_btn

lv_list_add_btn
LittlevGL(LVGL)图形库中的一个函数,用于向列表(list)对象中添加一个按钮(button)。

函数原型为:lv_obj_t * lv_list_add_btn(lv_obj_t * list, const void * img_src, const char * txt)

这个函数用于在列表对象中添加一个按钮,可以包含一个图像和一个文本。

list 参数是指向列表对象的指针,即要将按钮添加到的列表。

img_src 参数是一个指向图像数据的指针,用于指定按钮上显示的图像。如果不需显示图像,可以将此参数设置为 NULL

txt 参数是一个表示按钮上显示的文本的字符串。

lv_list_add_btn 函数会在列表对象中创建一个新的按钮,并将其添加到列表的末尾。按钮的图像和文本将根据提供的参数进行显示。

列表(list)是 LittlevGL
中的一种容器对象,用于显示一系列有序的项目。通过向列表中添加按钮,可以创建一个可点击的项目列表,以便用户与列表中的选项进行交互。

lv_list_add_btn 函数的第二个参数中,可以使用一些宏定义来指定按钮上显示的图像。以下是一些常见的宏定义示例:

  1. LV_SYMBOL_OK: 显示一个“√”符号,表示确认或通过。
  2. LV_SYMBOL_CLOSE: 显示一个“X”符号,表示关闭或取消。
  3. LV_SYMBOL_EDIT: 显示一个“✎”符号,表示编辑。
  4. LV_SYMBOL_DELETE: 显示一个“𐄂”符号,表示删除。
  5. LV_SYMBOL_REFRESH: 显示一个“⟳”符号,表示刷新或重新加载。
  6. LV_SYMBOL_WIFI: 显示一个 Wi-Fi 信号图标。

这些宏定义可以在使用 lv_list_add_btn 函数时,通过传递相应的宏定义来显示对应的图像。

除了这些宏定义外,还可以使用图像资源对象(lv_img)作为第二个参数,以显示自定义的图像。

2.lv_obj_add_state

lv_obj_add_state 是 LittlevGL(LVGL)图形库中的一个函数,用于向对象添加状态。

函数原型为:void lv_obj_add_state(lv_obj_t * obj, lv_state_t state)

这个函数用于将指定的状态添加到对象的状态集中。

obj 参数是一个指向对象的指针,表示要添加状态的对象。

state 参数是一个表示要添加的状态的枚举值(lv_state_t 类型)。LVGL 中定义了许多状态,例如 LV_STATE_DEFAULTLV_STATE_PRESSEDLV_STATE_CHECKED 等,开发者可以根据需要选择合适的状态。

通过调用 lv_obj_add_state 函数,可以将指定的状态添加到对象的状态集中。在绘制对象时,LVGL 会根据对象的状态选择正确的外观样式。

例如,可以通过将 LV_STATE_PRESSED 状态添加到按钮对象来模拟按钮的按下效果,或通过将 LV_STATE_CHECKED 状态添加到复选框对象来表示它被选中。

3.代码实例

lv_obj_t *list;
static void event_cb(lv_event_t *e)
{
    lv_obj_t *target=lv_event_get_target(e);   //获取触发源
    printf("%s\n",lv_list_get_btn_text(list,target));//获取文本并且打印
    lv_obj_add_state(target,LV_STATE_FOCUS_KEY);   //添加聚焦状态
}

void my_lvgl(void)
{
    list =lv_list_create(lv_scr_act());  //创建一个列表部件
    lv_obj_set_size(list,200,200);    //设置大小
    lv_obj_center(list);   //居中对齐
    lv_list_add_text(list,"Settings");  //添加文本
    lv_obj_t  *btn1=lv_list_add_btn(list,LV_SYMBOL_WIFI,"WIFI");     // 添加wifi图标
    lv_obj_t  *btn2=lv_list_add_btn(list,LV_SYMBOL_AUDIO,"music");   //添加音乐图标
    lv_obj_t  *btn3=lv_list_add_btn(list,LV_SYMBOL_VIDEO,"WIFI");    //添加视频图标
    lv_list_add_text(list,"Settings");  //添加文本


    lv_obj_add_event_cb(btn1,event_cb,LV_EVENT_CLICKED,NULL);   //添加事件,点击释放时触发
}

二.下拉列表

1.知识概览

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.函数接口

1.lv_dropdown_set_dir

lv_dropdown_set_dir 是 LittlevGL(LVGL)图形库中的一个函数,用于设置下拉菜单(dropdown)的打开方向。

函数原型为:void lv_dropdown_set_dir(lv_obj_t * dropdown, lv_dropdown_dir_t dir)

这个函数用于设置下拉菜单的打开方向,决定了下拉菜单的弹出位置。

dropdown 参数是一个指向下拉菜单对象的指针,表示要设置打开方向的下拉菜单。

dir 参数是一个表示下拉菜单的打开方向的枚举值(lv_dropdown_dir_t 类型)。LVGL 中定义了几个方向,包括 LV_DROPDOWN_DIR_UP(向上打开)、LV_DROPDOWN_DIR_DOWN(向下打开)、LV_DROPDOWN_DIR_LEFT(向左打开)和 LV_DROPDOWN_DIR_RIGHT(向右打开)。

通过调用 lv_dropdown_set_dir 函数,可以将指定的打开方向应用到下拉菜单,并决定其弹出的位置。这可以在创建下拉菜单之后或根据需要时进行设置。

例如,将 LV_DROPDOWN_DIR_DOWN 方向应用到下拉菜单,使其向下打开,显示在按钮的下方。

2.lv_dropdown_add_option

lv_dropdown_add_option 是 LVGL(LittlevGL)中用于向下拉菜单添加选项的函数。该函数的原型如下:

lv_obj_t * lv_dropdown_add_option(lv_obj_t * dropdown, const char * option_str)
  • dropdown 是指向下拉菜单对象的指针。
  • option_str 是要添加的选项的文本字符串。

以下是示例代码,展示如何使用 lv_dropdown_add_option 函数向下拉菜单中添加选项:

// 创建下拉菜单
lv_obj_t *dropdown = lv_dropdown_create(lv_scr_act(), NULL);

// 添加选项
lv_dropdown_add_option(dropdown, "Option 1");
lv_dropdown_add_option(dropdown, "Option 2");
lv_dropdown_add_option(dropdown, "Option 3");

3.代码实例

static void event_cb(lv_event_t *e)
{
    lv_obj_t *target=lv_event_get_target(e);   //获取触发源
    printf("%d\n",lv_dropdown_get_selected(target));   //获取选项
    char buf[10]={0};
    lv_dropdown_get_selected_str(target,buf,sizeof(buf));  //获取文本
    printf("%s\n",buf);

}

void my_lvgl(void)
{
    lv_obj_t *dd=lv_dropdown_create(lv_scr_act());   //创建下拉部件
    lv_dropdown_set_options(dd,"a\nb\nc\nd");        //动态设置内容
    //lv_dropdown_set_options_static(dd,"a\nb\nc\nd");    //静态设置内容
    lv_dropdown_add_option(dd,"e",4);   //添加索引
    lv_dropdown_set_selected(dd,1);      //社会当前索引

    lv_obj_add_event_cb(dd,event_cb,LV_EVENT_VALUE_CHANGED,NULL);  //添加事件当选项发生变化触发


    lv_dropdown_set_dir(dd,LV_DIR_RIGHT);         //设置列表展开方向
    lv_dropdown_set_symbol(dd,LV_SYMBOL_RIGHT);   //设置图标

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DRV8301 踩坑记,Status1 D10 老是 Fault

波形如上: 看第一个时钟出来的数据(Status1 读完自动清除?),因此数据是:0x20 输入结构体解析: 可以看到,FETHA_OC了也就是A桥上管过流了; 检查一下硬件看看&#xff1…

【git】git update-index --assume-unchanged(不改动.gitignore实现忽略文件)

文章目录 原因分析:添加忽略文件(取消跟踪)的命令:取消忽略文件(恢复跟踪)的命令:查看已经添加了忽略文件(取消跟踪)的命令: 原因分析: 已经维护的项目,文件已经被追踪,gitignore文件不方便修…

天梯算法Day1整理

Nanami and Arithmetic Sequence 题面 思路 炸鱼题 只有n1的时候&#xff0c;只有一个等差数列&#xff1b; 其余时候&#xff0c;都是都有无数个等差数列。 代码 #include <iostream> using namespace std;int main() {int t, n;cin >> t;while (t--) {cin…

如何使用淘宝客?

1.定义&#xff1a;是一种按成交计费的推广工具&#xff0c;由淘宝客帮助商家推广商品&#xff0c;买家通过推广链接进入完成交易后&#xff0c;商家按照设置佣金支付给淘宝客费用。 2.优势&#xff1a; &#xff08;1&#xff09;展示、点击全免费。 &#xff08;2&#xf…

防御保护---防火墙双机热备直路部署(上下三层接口)

防御保护---防火墙双机热备直路部署&#xff08;上下三层接口&#xff09; 一、根据网段划分配置IP地址和安全区域二、配置动态路由OSPF三、配置双机热备四、测试&#xff1a;4.1 测试一&#xff1a;查看状态和路由器路由表&#xff08;双机热备&#xff09;前后对比4.2 测试二…

Ant-design-vue(v4.1.1) 创建并初始化前端项目

前提&#xff1a; 先安装 node.js (安装node.js后&#xff0c;在安装目录下的node-modles下会有一个 npm) 直接官网下载&#xff0c;直接点击安装&#xff0c;不勾选tools&#xff0c;选非c盘&#xff08;之后会用npm来下载东西&#xff09; 验证安装是否成功 cmd : node -v …

【Vue3 + Vite】Vite搭建 项目解构 Vue快速学习 第一期

文章目录 Vue3介绍Vue3通过Vite实现工程化&#xff1a;一、Vite创建Vue3工程化项目1.1 ViteVue3项目的创建、启动、停止1.2 ViteVue3项目的目录结构 二、ViteVue3 项目组件(SFC入门)2.1 什么是VUE的组件 ?2.2 什么是.vue文件 ?2.3 工程化vue项目如何组织这些组件? 三、ViteV…

易优CMS采集插件使用教程

本易优CMS采集教程说明如何使用易优CMS采集插件&#xff0c;批量获取互联网上的文章数据&#xff0c;并自动更新到易优cms&#xff08;eyoucms&#xff09;网站&#xff0c;快速丰富网站的内容。 目录 1. 下载并安装易优CMS采集插件 2. 对接网页文章采集工具 3. 采集数据发…

12nm工艺,2.5GHz频率,低功耗Cortex-A72处理器培训

“ 12nm工艺&#xff0c;2.5GHz频率&#xff0c;低功耗Cortex-A72处理器培训” 本项目是真实项目实战培训&#xff0c;低功耗UPF设计&#xff0c;后端参数如下&#xff1a; 工艺&#xff1a;12nm 频率&#xff1a;2.5GHz 资源&#xff1a;2000_0000 instances 为了满足更多…

Git系列---标签管理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.理解标签2.创建标签…

Python之数据可视化(地图)

目录 一 基础地图应用 二 全国疫情图 一 数据准备 二 数据处理 二 湖北省疫情图 一 数据准备 二 数据处理 一 基础地图应用 导入map地图对象 from pyecharts.charts import Map map Map() 写入数据 data [("北京市",100),("上海市"…

【代码随想录】LC 349. 两个数组的交集

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记&#xff0c;如有侵权&#xff0c;立即删除。 一、题目 1、原题链接 349. 两个数组的交集 2、题目描述 二、解题报…

使用Spring AOP做接口权限校验和日志记录

文章目录 一、AOP 介绍1.1 AOP 应用场景1.2 AOP 中的注解 二、权限校验2.1 定义权限注解2.2 定义切面类2.3 权限验证服务2.4 织入切点2.5 测试 三、日志记录3.1 日志切面类3.2 异常统一处理 四、AOP 底层原理4.1 todo 一、AOP 介绍 AOP&#xff1a; 翻译为面向切面编程&#x…

“/“应用程序中的服务器错误.

<div id"m_category" class" round2"><h3>管理中心</h3><div class"con"> <p><a href"categorymanager.aspx">类别管理</a></p> /*我是这段代码出现问题*/ <p><a …

深入理解Java中的ForkJoin框架原理

在现代多核处理器的时代&#xff0c;有效地利用并行计算可以极大地提高程序的性能。Java中的ForkJoin框架是Java 7引入的一个并行计算框架&#xff0c;它提供了一种简单而高效的方式来利用多核处理器。在本文中&#xff0c;我们将深入探讨ForkJoin框架的原理和工作方式。 一、什…

MySQL进阶45讲【7】行锁

1 前言 在上一篇文章中&#xff0c;介绍了MySQL的全局锁和表级锁&#xff0c;今天我们就来讲讲MySQL的行锁。 MySQL的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁&#xff0c;比如MyISAM引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁&…

vue2父组件向子组件传值时,子组件同时接收多个数据类型,控制台报警的问题

最近项目遇到一个问题,就是我的父组件向子组件(公共组件)传值时,子组件同时接收多个数据类型,控制台报警的问题,如下图,子组件明明写了可同时接收字符串,整型和布尔值,但控制台依旧报警: 仔细检查父组件,发现父组件是这样写的: <common-tabletooltip :content=…

数据可视化工具选择指南:六款主流工具的综合评测

随着大数据时代的来临&#xff0c;数据可视化已成为各行业不可或缺的工具。本文将为您介绍市面上六款主流数据可视化工具&#xff0c;包括山海鲸可视化、Echarts、D3.js、Tableau、Power BI和Funnel.io&#xff0c;帮助您更好地了解并选择适合您的工具。 山海鲸可视化 山海鲸…

STM32学习笔记(六) —— 配置系统时钟

1.时钟树 从图中可以看出一共有四个时钟来源&#xff0c;分别是内部高速时钟、内部低速时钟、外部高速时钟接口、外部低速时钟接口&#xff0c;这些时钟源经过内部的倍频分频后提供给各外设使用。其中HSE与LSE需要由外部提供&#xff0c;可以是外部时钟直接输入&#xff0c;也可…

【八大排序】直接插入排序 | 希尔排序 + 图文详解!!

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、排序的概念二、直接插入排序2.1 基本思想2.2 适用说明2.3 过程图示2.4 代码实现2.…