LVGL部件4

一.列表部件

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.rhkb.cn/news/249458.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手不会Git也能玩Github吗?

新手不会Git也能玩Github吗? 前言使用Github的准备步骤使用一种访问外网资源的方法(这一步才是新手最容易)注册账号 创建一个自己的仓库创建完仓库后的界面 搜索你想要的代码类型以搜索坦克大战为例以下载烟花代码为例 总结 前言 说到Github&…

使用Python的Turtle模块简单绘制烟花效果

import turtle import random# 初始化屏幕 screen turtle.Screen() screen.bgcolor("black") screen.title("烟花模拟")# 创建一个Turtle来绘制烟花 firework turtle.Turtle() firework.hideturtle() firework.speed(0) # 设置绘图速度为最快# 绘制烟花…

关系型数据库的介绍与历史(History of DataBase)

昨晚和大家聊到 数据库(DataBase)简单概述 ,今天和大家聊聊 关系型数据库(关系数据库) 也就是DataBase(简称DB)的历史,它是以关系模型(Relational Model)来构…

C# 多线程(2)——线程同步

目录 1 线程不安全2 线程同步方式2.1 简单的阻塞方法2.2 锁2.2.1 Lock使用2.2.2 互斥体Mutex2.2.3 信号量Semaphore2.2.3 轻量级信号量SemaphoreSlim2.2.4 读写锁ReaderWriterLockSlim 2.3 信号同步2.3.1 AutoResetEvent2.3.1.1 AutoResetEvent实现双向信号 2.3.2 ManualResetE…

麒麟系统—— openKylin 安装 Nginx

麒麟系统—— openKylin 安装 Nginx 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载 nginx三、解压与运行解压检查与编译安装编译运行 四、配置加入到服务中加入环境变量nginx 配置文件 五、常用命令 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c…

如何访问 Oracle OKE 集群

OKE是Oracle Cloud提供的托管Kubernetes服务,为用户提供强大而灵活的容器编排平台。在本文中,我们将详细介绍如何有效地与OKE集群进行交互,包括访问集群的不同方式、管理访问权限以及执行常见操作的步骤。 1 安装oci命令 1.1 在Oracle Linux…

【数据库】mysql触发器使用

题目: 创建职工表以及职工工资表职工表字段:工号,姓名,性别,年龄工资表字段:编号自增,职工工号,基础工资10000通过触发器实现:对职工进行添加时 工资表中也要体现当前职…

解说 AIGC(人工智能生成内容) 是什么?

前言 AIGC (AI Generated Content)即人工智能生成内容,一般认为是相对于PCG(专业生成内容)、UCG(用户生成内容)而提出的概念。AIGC狭义概念是利用AI自动生成内容的生产方式。广义的AIGC可以看作是像人类一样具备生成创造能力的AI技术,即生成式AI,它可以基于训练数据和生成算法…

数据可视化 pycharts实现中国各省市地图数据可视化

自用版 数据格式如下: 运行效果如下: import pandas as pd from pyecharts.charts import Map, TreeMap, Timeline, Page, WordCloud from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.globals im…

THREE.JS动态场景开发实战【赛博朋克】

在本教程中,我们将探索如何创建类似 Three.js 的赛博朋克场景,灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程,包括后处理效果和动态光照,所有这些都不需要任何着色器专业知识。 我用这个场…

3D词云图

工具库 tagcanvas.min.js vue3&#xff08;框架其实无所谓&#xff0c;都可以&#xff09; 实现 <script setup> import { onMounted, ref } from vue; import ./tagcanvas.min.js;const updateFlag ref(false);// 词云图初始化 const initWordCloud () > {let …

IP定位如何进行业务风控反欺诈

IP地址作为接入互联网的唯一标识&#xff0c;分析其归属地及网络类型等多维度信息&#xff0c;帮助识别虚假流量和欺诈账号&#xff0c;保障账号和交易安全&#xff0c;帮助企业持续优化风控与反欺诈模型&#xff0c;降低经济损失。 交易聚集分析 通过IP地址数据服务得到的交易…

【EI会议征稿中|ACM出版】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​

#先投稿&#xff0c;先送审#ACM出版#第三届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 2024年3月8日-10日 | 中国济南 会议官网&…

四通道 LVDS 差分线缆接收器MS21148T

产品简述 MS21148T 是一款四路低压差分信号 (LVDS) 线路接收器。在 输入共模电压范围内&#xff0c;每一路差分接收器都可以把 100mV 的差 分输入电压转换成有效的逻辑输出。 该芯片可应用于约 100Ω 的 受控阻抗介质上进行点对点基带数据传输。传输介质可以是印 刷电…

Git系列---远程操作

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 引用 1.理解分布式版本控制…

如何使用docker部署Swagger Editor并实现无公网ip远程协作编辑文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

lombok导致的IndexOutOfBoundsException

一、问题描述 ERROR 25152 --- [1.190-81-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSyste…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线&#xff08;SkyLine&#xff09;顾名思义就是天空与地面的边界线&#xff0c;人站在不同的高度&#xff0c;会看到不同的景色和地平线&#xff0c;天空与地面建筑物分离的标记线&#xff0c;不得不说&#xff0c;每天抬头仰望天空&#xff0c;相信大家都可…

python实现贪吃蛇小游戏(附源码)

文章目录 导入所需的模块坐标主游戏循环模块得分 贪吃蛇小游戏&#xff0c;那个曾经陪伴着00后和90后度过无数欢笑时光的熟悉身影&#xff0c;仿佛是一把打开时光之门的钥匙。它不仅是游戏世界的经典之一&#xff0c;更是我们童年岁月中不可或缺的一部分&#xff0c;一个承载回…

CIFAR-10数据集详析:使用卷积神经网络训练图像分类模型

1.数据集介绍 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成&#xff0c;每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为5个训练批次和1个测试批次&#xff0c;每个批次有10000张图像。测试批次正好包含从每个类中随机选择的 1000 张图像…