【嵌入式LVGL】04.LVGL常用结构体、函数、变量+LVGL接口函数区分 一、lv_obj_t是 LVGL 最核心、最重要的结构体没有之一1. 它是什么lv_obj_t 所有 UI 组件的基类父模板你学到的所有控件标签、按钮、开关、进度条、空白容器、lv_win 窗口、列表、图片等等…… 底层全部继承 lv_obj_t。每一个界面上显示的东西本质都是一个 lv_obj_t 对象。2. 为什么它至关重要4 个核心作用① 统一所有控件的通用属性parent父子层级构成界面树窗口里放开关、标签全靠这个指针关联coords坐标、宽高决定控件画在屏幕哪个位置styles样式颜色、圆角、边框state状态按下、禁用、聚焦class_p标记它到底是按钮 / 开关 / 窗口哪一类控件不管什么控件都必须保存这套基础信息全部封装进 lv_obj_t。② 实现通用函数一套通吃LVGL 大量通用接口参数统一是 lv_obj_t*lv_obj_set_size(lv_obj_t *obj, w, h); // 设置大小按钮/窗口/开关都能用 lv_obj_align(lv_obj_t *obj, ...); // 设置对齐 lv_obj_set_style_bg_color(obj, ...); // 设置背景色 lv_obj_del(lv_obj_t *obj); // 删除任意控件如果没有lv_obj_t每一种控件都要单独写一套设置大小、移动、删除的函数代码会爆炸。③ 支撑界面层级渲染逻辑LVGL 渲染流程从根屏幕lv_scr_act()遍历所有lv_obj_t对象按父子顺序一层层绘制。没有lv_obj_t的父子指针系统无法知道哪个控件在哪个容器内部、谁在前谁在后。④ 事件系统全部依托它点击、滑动、切换等事件全部基于lv_obj_t对象传递回调函数拿到的触发对象也是lv_obj_t*。3. 两种创建方式本质都是 lv_obj_t空白容器lv_obj_t* menu3 lv_obj_create(parent); // 直接创建基础lv_obj_t空白对象专用控件开关、窗口、按钮lv_obj_t *sw lv_switch_create(parent); // 内部先创建lv_obj_t再追加开关专属扩展属性返回指针依然是lv_obj_t*所有xxx_create()返回值全是lv_obj_t*统一类型。4. 极简总结LVGL 里所有看得见的东西都是 lv_obj_t它是整个图形库的底层骨架层级、渲染、样式、事件全部依赖它几乎 90% 的 LVGL 函数都需要传入lv_obj_t*作为操作对象是必须吃透的核心结构。二、和 lv_obj_t 配套的顶层核心结构体1.lv_obj_class_t作用区分控件类型按钮 / 开关 / 标签 / 窗口存在 lv_obj_t 的 class_p 指针里用途内部保存该控件专属创建、绘图、事件回调函数判断对象是什么组件。2. lv_area_t成员x1,y1,x2,y2记录控件坐标区域lv_obj_t-coords 就是它常用函数lv_area_set_pos、lv_area_is_inside判断点击是否落在控件内。3. lv_obj_style_t控件样式结构体存颜色、圆角、字体、边框、透明度所有组件共用lv_obj_t 里挂载lv_obj_set_style_xxx 系列函数操作它。4. lv_event_t超级高频所有组件点击、滑动、切换事件的载体几乎所有交互控件按钮、开关、复选框、键盘都要用关键函数lv_obj_add_event_cb(obj, 回调函数, LV_EVENT_CLICKED, NULL)lv_event_get_target(e) 获取触发的控件返回lv_obj_t*5. lv_state_t控件状态枚举按下、聚焦、禁用、选中开关、复选框、按钮、进度条依赖样式会随状态切换。6. 位域标记 lv_obj_flag_t控制控件隐藏、可点击、可滚动、布局刷新所有组件通用。三、全局通用关键变量 / 句柄lv_scr_act()获取当前激活屏幕所有组件创建时最常用的父对象返回lv_obj_t*LV_PALETTE_xxx 全局颜色常量LV_PALETTE_BLUE/LV_PALETTE_REDLV_ALIGN_xxx 对齐宏LV_ALIGN_CENTER、LV_ALIGN_TOP_LEFTLV_SYMBOL_xxx 内置图标符号关闭、勾选、箭头窗口 / 按钮 / 消息框用。极简总结万物根基lv_obj_t 所有组件父结构体必掌握交互核心lv_event_t 做点击、切换逻辑必备每个控件都有自己专属 xxx_t 结构体只是创建函数返回统一转成lv_obj_t*屏幕、对齐、颜色、图标是全局宏变量所有组件通用定时器lv_timer_t是配套工具用来定时刷新界面数据。四、LVGL 函数前缀分类对照表一、通用控件接口lv_obj_*所有控件通用label/btn/list/switch/page 都能调用函数示例功能lv_obj_set_size()设置控件宽高lv_obj_set_pos()设置坐标lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN)隐藏控件lv_obj_clear_flag(obj, LV_OBJ_FLAG_HIDDEN)显示控件lv_obj_set_style_text_font()设置文字字体lv_obj_add_style()挂载自定义样式lv_obj_del()删除控件lv_obj_center()居中lv_obj_align()设置对齐方式二、控件专属接口lv_控件类型_*仅对应控件可用前缀对应控件示例函数功能lv_label_文本标签lv_label_set_text()修改标签文字lv_btn_普通按钮lv_btn_set_checkable()设置按钮可勾选lv_list_列表框lv_list_add_btn() / lv_list_get_btn_text()添加按钮、读取按钮文字lv_switch_开关控件lv_switch_set_anim_time()设置开关动画时长lv_textarea_文本输入框lv_textarea_set_text()输入框赋值lv_dropdown_下拉框lv_dropdown_set_options()设置下拉选项lv_slider_滑动条lv_slider_set_value()设置滑块数值lv_roller_滚轮选择器lv_roller_set_options()设置滚轮选项三、非控件类接口操作样式 / 内存 / 定时器 / 文件 / 事件/工具 / 系统和控件无关前缀操作对象示例函数用途lv_style_样式结构体 lv_style_tlv_style_set_text_font()给样式设置字体、颜色、圆角lv_mem_LVGL 内存堆lv_mem_alloc()手动内存分配底层lv_timer_LVGL 软件定时器lv_timer_create()创建定时任务lv_event_事件工具lv_event_get_target()获取触发事件的控件lv_fs_文件系统lv_fs_open() / lv_fs_read()读写 SD 卡 / 本地文件lv_font_字体资源lv_font_load()加载外部字体lv_disp_显示屏幕lv_disp_set_bg_color()设置屏幕背景色lv_indev_输入设备触摸lv_indev_read()读取触摸坐标快速判断口诀lv_obj_xxx → 随便哪个控件都能用lv_label/lv_list/lv_btn_xxx → 只能对应同种控件lv_style/lv_timer/lv_fs_xxx → 和控件无关操作配套功能句柄lv_obj_t* 指针是什么

相关新闻

最新新闻

STM32与TPD2015FN实现工业级多通道功率驱动方案

STM32与TPD2015FN实现工业级多通道功率驱动方案

1. 项目背景与核心器件选型在工业自动化、机器人控制等高可靠性应用场景中,对电感和电阻负载的精确控制一直是系统设计的难点。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合STM32F373VC这款带硬件FPU和DAC的Cortex-M4微控制器,构成了一个…

2026/7/10 0:18:11
比赛肯定是安全第一

比赛肯定是安全第一

简 介: 比赛安全优先,无需拆除接收器 参赛队员咨询是否需拆除飞机遥控接收器以确保公平。卓大回复强调安全第一,无需拆除,理由如下: 安全考量:保留接收器可在失控时紧急断电,避免手动拔电源的风…

2026/7/10 0:18:11
蓝牙5.4低功耗音频系统设计与优化实践

蓝牙5.4低功耗音频系统设计与优化实践

1. 项目背景与核心组件选型在无线音频传输领域,蓝牙5.4标准的推出标志着低功耗音频(LE Audio)技术进入成熟阶段。本次项目采用IDC777-1蓝牙模块与PIC18F66K40微控制器的组合方案,旨在构建一个高保真、低延迟的无线音频传输系统。这套方案特别适合需要兼顾…

2026/7/10 0:18:11
AI 时代新手入门之听懂 AI 在说什么?

AI 时代新手入门之听懂 AI 在说什么?

这不是一份背名词的词典,而是一张理解 AI 的学习地图。 学习 AI 最容易卡住的地方,不是某个词听不懂,而是把所有概念平铺在一起记。更有效的方法,是先知道它属于哪一层,再理解它解决什么问题。 这份讲义把 基础概念拆成 5 层:先理解 AI 怎么回答,再理解 AI 怎么做事、怎…

2026/7/10 0:18:11
高压安全隔离技术:ISOM8710与PIC18F2682的工业应用

高压安全隔离技术:ISOM8710与PIC18F2682的工业应用

1. 高压安全隔离的核心需求与挑战在工业自动化、电力电子和医疗设备等领域,高压安全隔离是一个无法回避的关键需求。想象一下,当你的控制电路需要监测380V交流电机的运行状态时,如果直接将高压信号引入低压MCU,不仅会烧毁芯片&…

2026/7/10 0:18:11
2026年数字化质量检测实务:工程图纸自动识别与检验计划(FAI/PPAP)构建指南

2026年数字化质量检测实务:工程图纸自动识别与检验计划(FAI/PPAP)构建指南

在 2026 年的精密制造环境下,质量检测(Quality Inspection)已不再仅仅是单纯的测量,而是演变为一套集成了工程图纸数字化解析、公差分析与自动报告生成的闭环管理体系。面对日益复杂的 GD&T(几何尺寸与公差&#x…

2026/7/10 0:13:10

月新闻