LVGL对象(Objects)

news2025/5/14 1:14:07

文章目录

    • 🧱 一、LVGL 中的对象(lv\_obj)
      • 🔹 lv\_obj\_t 的作用
    • 🧩 二、对象的分类结构(类比继承)
    • 🧰 三、对象的创建与销毁
      • ✅ 创建对象
      • 示例:创建一个按钮
      • ❌ 删除对象
    • 🖼 四、对象的属性设置(常用函数)
    • 🧬 五、对象的层级与父子关系
    • 📩 六、事件机制(事件回调)
    • 🎨 七、样式系统(Style)
    • 🧵 八、容器对象(布局)
      • 示例:垂直布局容器
    • 🔚 总结(关键词串讲)


在 LVGL(Light and Versatile Graphics Library)中,对象(Object)是 UI 的基本构建单元,几乎所有控件(按钮、标签、滑块等)都是从基础对象派生出来的。理解 LVGL 中对象的结构、创建与操作,是掌握 LVGL 的核心之一。


🧱 一、LVGL 中的对象(lv_obj)

LVGL 中的对象是从 lv_obj_t 类型派生的,所有控件本质上都是 lv_obj_t 的一个子类型。

🔹 lv_obj_t 的作用

lv_obj_t 就像一个“GUI 元素基类”,提供了:

  • 样式(Style)
  • 坐标(位置与大小)
  • 子对象容器(父子层级结构)
  • 信号与事件处理机制(如回调函数)
  • 渲染与重绘管理

🧩 二、对象的分类结构(类比继承)

lv_obj_t
 ├── lv_btn_t     按钮
 ├── lv_label_t   标签
 ├── lv_slider_t  滑块
 ├── lv_img_t     图片
 ├── lv_canvas_t  画布
 ├── lv_list_t    列表
 └── lv_chart_t   图表

每个控件最终都继承自 lv_obj_t,但通过“类型封装 + 宏 + 函数接口”实现“伪面向对象”风格。


🧰 三、对象的创建与销毁

✅ 创建对象

lv_obj_t * obj = lv_obj_create(parent); // 创建一个基础对象

所有对象必须挂载在父对象上,最上层的是屏幕(lv_scr_act()

示例:创建一个按钮

lv_obj_t * btn = lv_btn_create(lv_scr_act());  // 在当前活动屏幕创建按钮
lv_obj_set_size(btn, 100, 50);
lv_obj_align(btn, LV_ALIGN_CENTER, 0, 0);

❌ 删除对象

lv_obj_del(obj);  // 删除对象及其所有子对象

🖼 四、对象的属性设置(常用函数)

功能函数
设置大小lv_obj_set_size(obj, w, h)
设置位置lv_obj_set_pos(obj, x, y)
居中对齐lv_obj_align(obj, LV_ALIGN_CENTER, x_off, y_off)
设置背景颜色lv_obj_set_style_bg_color(obj, lv_color_hex(0xff0000), LV_PART_MAIN)
设置圆角lv_obj_set_style_radius(obj, 10, LV_PART_MAIN)
设置边框宽度lv_obj_set_style_border_width(obj, 2, LV_PART_MAIN)

🧬 五、对象的层级与父子关系

LVGL 中每个对象都有一个 父对象(Parent),可以嵌套形成 树状结构

lv_scr_act()
└── 容器 container
    ├── 按钮 button1
    └── 标签 label1

通过父子关系自动:

  • 控制显示区域裁剪
  • 执行坐标变换
  • 执行事件冒泡(例如点击穿透)

📩 六、事件机制(事件回调)

LVGL 对象支持事件机制,例如点击、拖动、滚动等,可以注册回调函数处理:

static void my_event_cb(lv_event_t * e) {
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * obj = lv_event_get_target(e);
    if(code == LV_EVENT_CLICKED) {
        printf("Button clicked!\n");
    }
}

lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_ALL, NULL);

事件枚举值示例:

  • LV_EVENT_CLICKED:点击
  • LV_EVENT_PRESSED:按下
  • LV_EVENT_RELEASED:松开
  • LV_EVENT_DRAW_MAIN:绘制时触发

🎨 七、样式系统(Style)

对象通过样式系统控制外观,包括颜色、字体、边框、圆角等:

static lv_style_t style;
lv_style_init(&style);
lv_style_set_bg_color(&style, lv_color_hex(0xff0000));

lv_obj_add_style(obj, &style, LV_PART_MAIN);

支持多个部件(Part)和状态(State):

  • LV_PART_MAIN:主区域
  • LV_STATE_PRESSED:按下状态
  • LV_STATE_DISABLED:禁用状态

🧵 八、容器对象(布局)

  • lv_obj_create() 可以作为通用容器
  • 可设置布局和子对象自动排布

示例:垂直布局容器

lv_obj_t * cont = lv_obj_create(lv_scr_act());
lv_obj_set_layout(cont, LV_LAYOUT_COLUMN_MID);  // 子对象垂直居中排列

🔚 总结(关键词串讲)

概念关键词
基类lv_obj_t
创建lv_obj_create()
属性设置lv_obj_set_...()
父子关系parentchild
样式系统lv_style_tlv_obj_add_style()
事件回调lv_obj_add_event_cb()
层级结构树状结构管理 UI
自动布局lv_obj_set_layout()

在这里插入图片描述

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

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

相关文章

服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?

SSL/TLS 安全漏洞排查与修复指南 一、常见配置错误类型‌ 弱加密算法与密钥问题‌ 使用弱密码套件&#xff08;如DES、RC4&#xff09;或密钥长度不足&#xff08;如RSA密钥长度<2048位&#xff09;&#xff0c;导致加密强度不足。 密钥管理不当&#xff08;如私钥未加密存…

路由重发布

路由重发布 实验目标&#xff1a; 掌握路由重发布的配置方法和技巧&#xff1b; 掌握通过路由重发布方式实现网络的连通性&#xff1b; 熟悉route-pt路由器的使用方法&#xff1b; 实验背景&#xff1a;假设学校的某个分区需要配置简单的rip协议路由信息&#xff0c;而主校…

C++修炼:stack和queue

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…

【计算机视觉】优化MVSNet可微分代价体以提高深度估计精度的关键技术

优化MVSNet可微分代价体以提高深度估计精度的关键技术 1. 代价体基础理论与分析1.1 标准代价体构建1.2 关键问题诊断 2. 特征表示优化2.1 多尺度特征融合2.2 注意力增强匹配 3. 代价体构建优化3.1 自适应深度假设采样3.2 可微分聚合操作改进 4. 正则化与优化策略4.1 多尺度代价…

软考错题集

一个有向图具有拓扑排序序列&#xff0c;则该图的邻接矩阵必定为&#xff08;&#xff09;矩阵。 A.三角 B.一般 C.对称 D.稀疏矩阵的下三角或上三角部分包含非零元素&#xff0c;而其余部分为零。一般矩阵这个术语太过宽泛&#xff0c;不具体指向任何特定性 质的矩阵。对称矩阵…

T2I-R1:通过语义级与图像 token 级协同链式思维强化图像生成

文章目录 速览摘要1 引言2 相关工作统一生成与理解的 LMM(Unified Generation and Understanding LMM.)用于大型推理模型的强化学习(Reinforcement Learning for Large Reasoning Models.)3 方法3.1 预备知识3.2 语义级与令牌级 CoT语义级 CoT(Semantic-level CoT)令牌级…

Dockers部署oscarfonts/geoserver镜像的Geoserver

Dockers部署oscarfonts/geoserver镜像的Geoserver 说实话&#xff0c;最后发现要选择合适的Geoserver镜像才是关键&#xff0c;所以所以所以…&#x1f437; 推荐oscarfonts/geoserver的镜像&#xff01; 一开始用kartoza/geoserver镜像一直提示内存不足&#xff0c;不过还好…

扩增子分析|微生物生态网络稳定性评估之鲁棒性(Robustness)和易损性(Vulnerability)在R中实现

一、引言 周集中老师团队于2021年在Nature climate change发表的文章&#xff0c;阐述了网络稳定性评估的原理算法&#xff0c;并提供了完整的代码。自此对微生物生态网络的评估具有更全面的指标&#xff0c;自此网络稳定性的评估广受大家欢迎。本系列将介绍网络稳定性之鲁棒性…

【含文档+PPT+源码】基于微信小程序的社区便民防诈宣传系统设计与实现

项目介绍 本课程演示的是一款基于微信小程序的社区便民防诈宣传系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…

【MySQL】存储引擎 - ARCHIVE、BLACKHOLE、MERGE详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

代码随想录第41天:图论2(岛屿系列)

一、岛屿数量&#xff08;Kamacoder 99&#xff09; 深度优先搜索&#xff1a; # 定义四个方向&#xff1a;右、下、左、上&#xff0c;用于 DFS 中四向遍历 direction [[0, 1], [1, 0], [0, -1], [-1, 0]]def dfs(grid, visited, x, y):"""对一块陆地进行深度…

VUE CLI - 使用VUE脚手架创建前端项目工程

前言 前端从这里开始&#xff0c;本文将介绍如何使用VUE脚手架创建前端工程项目 1.预准备&#xff08;编辑器和管理器&#xff09; 编辑器&#xff1a;推荐使用Vscode&#xff0c;WebStorm&#xff0c;或者Hbuilder&#xff08;适合刚开始练手使用&#xff09;&#xff0c;个…

Java EE初阶——初识多线程

1. 认识线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 基本概念&#xff1a;一个进程可以包含多个线程&#xff0c;这些线程共享进程的资源&#xff0c;如内存空间、文件描述符等&#xff0c;但每个线程都有自己独…

如何删除网上下载的资源后面的文字

这是我在爱给网上下载的音效资源&#xff0c;但是发现资源后面跟了一大段无关紧要的文本&#xff0c;但是修改资源名称后还是有。解决办法是打开属性然后删掉资源的标签即可。

FPGA图像处理(5)------ 图片水平镜像

利用bram形成双缓冲&#xff0c;如下图配置所示&#xff1a; wr_flag 表明 buffer0写 还是 buffer1写 rd_flag 表明 buffer0读 还是 buffer1读 通过写入逻辑控制(结合wr_finish) 写哪个buffer &#xff1b;写地址 进而控制ip的写使能 通过状态缓存来跳转buffer的…

day21python打卡

知识点回顾&#xff1a; LDA线性判别PCA主成分分析t-sne降维 还有一些其他的降维方式&#xff0c;也就是最重要的词向量的加工&#xff0c;我们未来再说 作业&#xff1a; 自由作业&#xff1a;探索下什么时候用到降维&#xff1f;降维的主要应用&#xff1f;或者让ai给你出题&…

ERP学习(一): 用友u8安装

安装&#xff1a; https://www.bilibili.com/video/BV1Pp4y187ot/?spm_id_from333.337.search-card.all.click&vd_sourced514093d85ee628d1f12310b13b1e59b 我个人用vmware16&#xff0c;这位up已经把用友软件和环境&#xff08;sqlserver2008&#xff09; 都封城vmx文件了…

01 | 大模型微调 | 从0学习到实战微调 | AI发展与模型技术介绍

一、导读 作为非AI专业技术开发者&#xff08;我是小小爬虫开发工程师&#x1f60b;&#xff09; 本系列文章将围绕《大模型微调》进行学习&#xff08;也是我个人学习的笔记&#xff0c;所以会持续更新&#xff09;&#xff0c;最后以上手实操模型微调的目的。 (本文如若有…

海康相机无损压缩

设置无损压缩得到更高的带宽和帧率&#xff01;

从机器人到调度平台:超低延迟RTMP|RTSP播放器系统级部署之道

✅ 一、模块定位&#xff1a;跨平台、超低延迟、系统级稳定的音视频直播播放器内核 在无人机、机器人、远程操控手柄等场景中&#xff0c;低延迟的 RTSP/RTMP 播放器并不是“可有可无的体验优化”&#xff0c;而是系统能否闭环、操控是否安全的关键组成。 Windows和安卓播放RT…