当前位置: 首页 > news >正文

LVGL(lv_tabview)

文章目录

    • 一、功能概述
    • 二、基本使用方法
      • 1. 创建 tabview 控件
      • 2. 添加标签页(tab)
      • 3. 往 tab 中添加控件
      • 4. 设置默认选中标签
    • 三、常用函数接口
    • 四、事件使用示例(监听切换)
    • 五、方向与风格配置
    • 六、应用场景示例
    • 七、版本注意事项


lv_tabviewLVGL(Light and Versatile Graphics Library) 图形库中用于创建**选项卡式界面(Tab View)**的控件,它允许用户通过点击不同的标签页,在同一个区域中切换不同的界面内容。

这是在嵌入式 GUI 中常见的界面布局方式,适合用于信息分类展示、设置菜单、状态分组等场景。


一、功能概述

lv_tabview 控件由以下几部分组成:

  1. 选项卡标题区域(tab buttons):一排标签标题,点击可切换内容;
  2. 内容页面区域(tab content):每个标签对应一个页面容器;
  3. 滑动/切换效果:支持滑动切换 tab 页面;
  4. 样式配置:可设置背景色、字体、间距等样式;
  5. 事件回调:可获取 tab 切换事件。

二、基本使用方法

1. 创建 tabview 控件

lv_obj_t *tabview = lv_tabview_create(lv_scr_act(), LV_DIR_TOP, 50);
  • 第一个参数是父对象(一般是 lv_scr_act()
  • 第二个参数是标签页的位置方向(顶部、左侧、右侧、底部)
  • 第三个参数是标签页高度或宽度(单位像素)

2. 添加标签页(tab)

lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "信息");
lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "设置");
lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "状态");

每个 tabX 都是一个容器对象,可以在其上创建按钮、标签、图表等控件。

3. 往 tab 中添加控件

lv_label_create(tab1);  // 在“信息”页创建一个标签
lv_btn_create(tab2);    // 在“设置”页添加一个按钮

4. 设置默认选中标签

lv_tabview_set_act(tabview, 0, LV_ANIM_OFF); // 默认选中第0页,无动画

三、常用函数接口

函数功能
lv_tabview_create()创建 tabview 控件
lv_tabview_add_tab()添加一个标签页并返回容器对象
lv_tabview_set_act()设置当前选中标签页
lv_tabview_get_tab_act()获取当前活动页索引
lv_tabview_get_tab()获取指定索引的标签页对象
lv_tabview_set_tab_name()设置标签页标题(LVGL v9)
lv_obj_add_event_cb()添加事件回调函数(监听 tab 切换)

四、事件使用示例(监听切换)

static void tab_event_cb(lv_event_t *e)
{uint32_t act_id = lv_tabview_get_tab_act(lv_event_get_target(e));printf("当前选中标签页:%d\n", act_id);
}lv_obj_add_event_cb(tabview, tab_event_cb, LV_EVENT_VALUE_CHANGED, NULL);

五、方向与风格配置

lv_obj_set_style_bg_color(tabview, lv_color_hex(0x333333), 0); // 背景色
lv_obj_set_style_text_color(tabview, lv_color_white(), 0);     // 文本颜色

可以通过样式系统自定义标签页样式、内容页边距、动画方式等。


六、应用场景示例

  • 系统设置界面:多个 tab 页分别显示“网络”、“显示”、“声音”等设置项;
  • 状态监控系统:每个 tab 显示不同传感器状态;
  • 工业触摸屏界面:左侧 tab 控制不同机器模块状态显示。

七、版本注意事项

LVGL v8 与 v9 的 tabview 接口有所不同,v9 中 lv_tabview_set_tab_name() 替代了部分接口,结构也更清晰,具体需查阅对应版本 API 文档。


相关文章:

  • 商品条形码查询接口如何用C#进行调用?
  • 【Harmony OS】组件自定义属性、事件和状态管理
  • 525全国护肤日 国际医学皮肤科助力银龄肌肤科学护肤
  • 用ChatGPT辅助UI设计:从需求分析到风格提案的提效秘籍
  • 16. Git从入门到实践
  • MySQL问题:什么是MySQL的中的最左匹配原则?
  • 钠离子电池循环寿命突破万次
  • ZAB 和 RAFT分别是什么?它们的区别是什么?
  • 振动分析 - 速度谱与加速度谱的转换
  • 08SpringBoot高级--自动化配置
  • 联想小新笔记本电脑静电问题导致无法开机/充电的解决方案
  • 【Vue 3 运行时 Diff 算法深度解析:五步走策略实现高效更新】
  • 3D虚拟工厂
  • DeepSeek 赋能智能安防:从算法革新到场景落地的全解析
  • 【Ubuntu】MySQL配置远程连接
  • OpenCv高阶(十八)——dlib人脸检测与识别
  • Conda:环境移植及更新1--使用conda-pack
  • WEB安全--RCE--webshell HIDS bypass4
  • 3D Tiles高级样式设置与条件渲染(3)
  • 单向循环链表与双向链表
  • 咸宁市做网站/整合营销传播方法包括
  • 旅游景区英文网站建设研究/网络营销概念
  • 做网站是找什么人/免费推广引流平台
  • 用路由器做简单的网站/优化搜索引擎
  • 重庆的网站建设/网站关键词搜索排名
  • 如何做宣传推广的网站链接/四种营销策略