LVGL图片按钮、选项卡、平铺视图、窗口、消息框、微调器、表格部件

目录

LVGL图片按钮

LVGL选项卡部件

LVGL平铺视图部件

LVGL窗口部件

LVGL消息框部件

LVGL微调器

LVGL表格部件


LVGL图片按钮

图片按钮部件类似于按钮部件,不同的是,用户可以在其中设置图片。

图片按钮部件组成部分:

        主体LV_PART_MAIN

创建图片按钮部件:

lv_obj_t *imgbtn = lv_imgbtn_create(parent);

设置图片源、按钮大小:

lv_imgbtn_set_src(imgbtn, LV_IMGBTN_STATE_..., src_left, src_mid, src_right);    /* 设置某个状态的图片源 */
lv_obj_set_size(imgbtn, 64 * 3, 64);                                             /* 设置图片按钮大小 */

设置按钮状态:

lv_imgbtn_set_state(imgbtn, LV_IMGBTN_STATE_PRESSED);    /* 设置按下状态 */

扩展知识点:如何显示带有透明度通道的图片?

1、准备一张带有透明度通道的图片。

2、官方图片转换工具中,色彩格式选择:CF_TRUE_COLOR_ALPHA

3、声明图片并调用即可。

LV_IMG_DECLARE(img_cool);

static void event_cb(lv_event_t *e)
{
    lv_obj_set_style_img_recolor(imgbtn, lv_color_hex(0x007ffe), LV_STATE_DEFAULT);
    lv_obj_set_style_img_recolor_opa(imgbtn, 150, LV_STATE_DEFAULT);
}

lv_obj_t *imgbtn = lv_imgbtn_create(parent);
lv_imgbtn_set_src(imgbtn, LV_IMGBTN_STATE_RELEASEED, NULL, &img_cool, NULL);    /* 设置某个状态的图片源 */
lv_obj_set_size(imgbtn, 64, 64);                                                /* 设置图片按钮大小 */
lv_obj_add_event_cb(imgbtn, event_cb, LV_EVENT_PRESSED, NULL);

LVGL选项卡部件

选项卡部件可以实现多页面切换,用户可以在不同的页面上添加内容。

选项卡部件组成部分:

        主体lv_obj

        按钮lv_btnmatrix

 创建选项卡部件:

lv_obj_t *tabview = lv_tabview_create(parent, LV_DIR_..., tab_size);

添加选项卡:

lv_obj_t *tab1 = lv_tabview_add_table(tabview, "Tab 1");
lv_obj_t *tab2 = lv_tabview_add_table(tabview, "Tab 2");

设置当前选中的选项卡:

lv_tabview_set_act(tabview, 1, LV_ANIM_OFF);    /* 索引从0开始 */

获取按钮部分:

lv_obj_t *btn = lv_tabview_get_tab_btns(tabview);    /* 获取按钮部分 */

/* 未选中的按钮 */
lv_obj_set_style_bg_color(btn, lv_color_hex(0xb7472a), LV_PART_ITEMS | LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(btn, 200, LV_PART_ITEMS | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(btn, lv_color_hex(0xf33f3), LV_PART_ITEMS | LV_STATE_DEFAULT);

/* 选中的按钮 */
lv_obj_set_style_bg_color(btn, lv_color_hex(Oxelele1), LV_PART_ITEMS | LV_STATE_CHECKED);
lv_obj_set_style_bg_opa(btn, 200, LV_PART_ITEMS | LV_STATE_CHECKED);
lv_obj_set_style_text_color(btn, lv_color_hex(Oxb7472a), LV_PART_ITEMS | LV_STATE_CHECKED);
lv_obj_set_style_border_width(btn, O, LV_PART_ITEMS | LV_STATE_CHECKED);

获取主体部分:

lv_obj_t *obj = lv_tabview_get_content(tabview);    /* 获取主体部分 */
lv_obj_set_style_bg_color(obj, lv_color_hex(0xffffff), LV_STATE_DEFAULT);
lv_obj_set_style_bg_opa(obj, 255, LV_STATE_DEFAULT);

LVGL平铺视图部件

平铺视图部件可以实现不同方向的页面切换,用户可以页面中添加内容。

平铺视图部件组成部分:

        主体LV_PART_MAIN

        滚动条LV_PART_SCROLLBAR

 创建平铺视图部件:

lv_obj_t *tileview = lv_tileview_create(parent);

添加页面:

lv_obj_t *tile1 = lv_tileview_add_tile(tileview, 0, 0, LV_DIR_RIGHT);
lv_obj_t *tile2 = lv_tileview_add_tile(tileview, 1, 0, LV_DIR_LEFT);

设置当前显示页面:

lv_obj_update_layout(tileview);                    /* 更新参数 */
lv_obj_set_tile(tileview, tile2, LV_ANIM_OFF);     /* 根据页面对象设置 */
lv_obj_set_tile_id(tileview, 1, 0, LV_ANIM_OFF);   /* 根据页面行列设置 */

移除滚动条:

lv_obj_remove_style(tileview, NULL, LV_PART_SCROLLBAR);    /* 移除滚动条 */

LVGL窗口部件

窗口部件可以作为一个容器,展现不同功能的页面。

窗口部件组成部分:

        头部Header

        主体Content

创建窗口部件:

lv_obj_t *win = lv_win_create(parent, header_height);

添加标题、按钮:

lv_obj_t *title = lv_win_add_title(win, "Setting");
lv_obj_t *btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE, 20);

添加主体内容:

lv_obj_t *content = lv_win_get_content(win);    /* 获取主体 */
lv_obj_t *label = lv_label_create(content);     /* 添加内容 */

设置边框大小和圆角:

lv_obj_set_style_border_width(win, 1, LV_STATE_DEFAULT);
lv_obj_set_style_radius(win, 10, LV_STATE_DEFAULT);

隐藏窗口:

lv_obj_add_flag(win, LV_OBJ_FLAG_HIDDEN);

LVGL消息框部件

消息框部件可以实现弹窗提示,常用于消息通知、确定操作等。

消息框部件组成部分:

        主体obj

        标题title

        关闭按钮close_btn

        内容content

        按钮矩阵btnmatrix

创建消息框部件:

static const char *btns[] = {"Continue", "Close", ""};

/* Notice-标题,Do you want to continue?-主体文本,btns-按钮矩阵,true -关闭按钮 */
lv_obj_t *msgbox = lv_msgbox_create(lv_scr_act(), "Notice", "Do you want to continue?", btns, true);

关闭消息框:

lv_msgbox_close(msgbox);

获取按钮索引、文本:

lv_obj_t *target = lv_event_get_current_target(e);    /* 获取当前触发源 */
lv_msgbox_get_active_btn(target);                     /* 获取按钮索引 */
lv_msgbox_get_active_btn_text(target);                /* 获取按钮文本 */

清除消息框隐藏属性,出现弹窗提示:

lv_obj_clear_flag(msgbox, LV_OBJ_FLAG_HIDDEN);

LVGL微调器

微调器部件本质上就是一个数字文本,常用于精确调节某个参数的值。

微调器部件组成部分:

        主体LV_PART_MAIN

        光标LV_PART_CURSOR

创建微调器部件:

lv_obj_t *spinbox = lv_spinbox_create(parent);

数值递增、递减:

lv_spinbox_increment(spinbox);    /* 递增 */
lv_spinbox_decrement(spinbox);    /* 递减 */

设置步进值、范围值:

lv_spinbox_set_step(spinbox, 200);             /* 设置步进值,默认为1 */
lv_spinbox_set_range(spinbox, -1000, 1000);    /* 设置范围值,默认±99999 */

设置当前值:

lv_spinbox_set_value(spinbox, 400);

设置数字格式、光标位置:

lv_spinbox_set_digit_format(spinbox, 4, 2);    /* 设置数字位数、小数点位置 */
lv_spinbox_set_pos(spinbox, 3);                /* 设置光标位置 */

获取当前值:

lv_spinbox_get_value(spinbox);    /* 返回值为整数,而非小数 */

LVGL表格部件

表格部件由一个个单元格组成,它的单元格中只能存放文本形式的内容。

表格部件组成部分:

        主体LV_PART_MAIN

        单元格LV_PART_ITEMS

创建表格部件:

lv_obj_t *table = lv_table_create(parent);

设置行数、列数:

lv_table_set_row_cnt(table, 2);            /* 设置行数 */
lv_table_set_col_cnt(table, 2);            /* 设置列数 */
lv_table_set_col_width(table, 1, 200);     /* 设置列的宽度 */

设置单元格的内容:

lv_table_set_cell_value(table, 0, 0, "123");
lv_table_set_cell_value_fmt(table, 1, 0, "%d", 100);    /* 格式化输入,类似printf */

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[CISCN 2024] Crypto部分复现

文章目录 OvOez_rsacheckin浅记一下 迟来的文章 OvO 题目描述: from Crypto.Util.number import * from secret import flagnbits 512 p getPrime(nbits) q getPrime(nbits) n p * q phi (p-1) * (q-1) while True:kk getPrime(128)rr kk 2e 65537 kk …

3d打印问题总结

1.打印拉丝:https://zhuanlan.zhihu.com/p/152221550 解决方案:温度过高,PLA材料材料喷嘴温度一般设置为200度比较合适。

string OJ题

下面分享一下string做题心得 1. 明白字符串中存储的数字为0 8 9与0 8 9 完全不同,字符0其实在串中存储的是48,要有意识的转化。字符串中如果存数字8,意味着存了BS(退格) 例如1: 算出结果为5,存…

网上打印试卷的步骤是什么

对于学生和家长来说,打印试卷是日常学习中的一项重要需求。那么,如何在网上方便地打印试卷呢?下面,就让我来为您介绍琢贝云打印的试卷打印步骤。 一、选择琢贝云打印的原因 支持多种文件格式打印,包括图片、PPT、PDF、…

20.SkyWalking

一.简介 SkyWalking用于应用性能监控、分布式链路跟踪、诊断: 参考连接如下: https://github.com/apache/skywalking https://skywalking.apache.org/docs/ 二.示例 通过官网连接进入下载页面:https://archive.apache.org/dist/skywalkin…

2024年【T电梯修理】考试内容及T电梯修理新版试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年【T电梯修理】考试内容及T电梯修理新版试题,包含T电梯修理考试内容答案和解析及T电梯修理新版试题练习。安全生产模拟考试一点通结合国家T电梯修理考试最新大纲及T电梯修理考试真题汇总,…

k8s中yaml文件配置指定私有镜像仓库

1. yaml文件介绍 2. 如何快速编写yaml文件 1)如果有已存在的pod时可以 kubectl get pod xxxxxx -oyaml 2)直接假跑一次并查看 kubectl run xxxxxx --image镜像名 --dry-run -oyaml 3)查看pod相关描述信息 kubectl explain pod 3. 编写…

linux 安装redis 并设置开机启动

个人实测 流程 1、第一步 先下载redis ** redis地址 https://download.redis.io/releases/选择你想要的版本 我下载的是 如下图 2、第二步:把下载的包放到linux里面 我用的是 XSHELL 和XFTP 放到/usr/local/java路径下 你可以随便放 3、第三步: ** 执行 以下命令 进行解压 t…

js之图表使用

今天为了给大家演示图表的使用,今天展示下切换图形的修改属性快速修改 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script src"./js/jquery-3.7.1.js"></script><script src…

Llama 3没能逼出GPT-5!OpenAI怒“卷”To B战场,新企业级 AI 功能重磅推出!

Meta 是本周当之无愧的AI巨星&#xff01;刚刚推出的 Llama 3 凭借着强大的性能和开源生态的优势在 LLM 排行榜上迅速跃升。 按理说&#xff0c;Llama 3在开源的状态下做到了 GPT-3.7 的水平&#xff0c;必然会显得用户&#xff08;尤其是企业用户&#xff0c;他们更具备独立部…

flash-linear-attention中的Chunkwise并行算法的理解

这里提一下&#xff0c;我维护的几三个记录个人学习笔记以及社区中其它大佬们的优秀博客链接的仓库都获得了不少star&#xff0c;感谢读者们的认可&#xff0c;我也会继续在开源社区多做贡献。github主页&#xff1a;https://github.com/BBuf &#xff0c;欢迎来踩 0x0. 前言 …

老外卖27刀每月的教程已经更新

用了两天半的时间&#xff0c;边学习&#xff0c;边整理了一份老外的视频教程&#xff0c;涉及Facebook&#xff0c;YouTube&#xff0c;tiktok等大的流量平台&#xff0c;有案例&#xff0c;有分析&#xff0c;有如何做。 这个教程是老外讲的&#xff0c;没有什么玄乎的塑造价…

mysql 函数 GROUP_CONCAT 踩坑记录,日志:Row 244 was cut by GROUP_CONCAT()

mysql 函数 GROUP_CONCAT 踩坑记录&#xff0c;报错&#xff1a;Row 244 was cut by GROUP_CONCAT 结论&#xff1a;个人建议还是放在内存中拼接吧~db日志信息&#xff1a;Row 244 was cut by GROUP_CONCAT())根本原因&#xff1a;拼接的字符串长度超过 group_concat_max_len […

【LLM多模态】多模态LLM在图表处理的应用

note 在真实场景下&#xff0c;我们进行测试&#xff0c;多模态大模型在处理显著文本时表现尚可&#xff0c;但在处理细粒度文本时往往效果并不太好&#xff0c;why? ​具体原因如下&#xff1a; 首先&#xff0c;视觉编码器的分辨率对于多模态大模型的性能影响较大&#x…

Jenkins 还可以支持钉钉消息通知?一个插件带你搞定!

Jenkins 作为最流行的开源持续集成平台&#xff0c;其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。 但其实 Jenkins 还可以支持钉钉消息通知&#xff0c;其主要通过 Ding…

IIC通信(STM32)

一、IIC概念 &#xff11;、两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09; 同步&#xff0c;半双工 2、带数据应答 3、支持总线挂载多设备&#xff08;一主多从、多主多从&#xff09;一般使用一主多从。一主多从的…

clone方法总结Java

Java中Object类当中有许多方法&#xff0c;如图所示&#xff1a; clone方法就是其中一种&#xff0c;分为浅拷贝&#xff0c;深拷贝举一个例子&#xff1a; 浅拷贝&#xff1a; 在Person类当中右键鼠标然后&#xff0c;选中Generate&#xff1a; 然后重写clone方法 protecte…

Linux-应用编程学习笔记(三、文件属性和目录)

一、文件类型 1、普通文件&#xff08;ls -l 文件&#xff0c;权限前边第一个"-"代表普通文件&#xff1b;stat 文件&#xff09; 文本文件&#xff1a;ASCII字符 二进制文件&#xff1a;数字0/1 2、目录文件&#xff08;‘’d&#xff09;&#xff1a;文件夹 3…

每日两题 / 79. 单词搜索 39. 组合总和(LeetCode热题100)

79. 单词搜索 - 力扣&#xff08;LeetCode&#xff09; 遍历board&#xff0c;遇到字符等于word的第一个字符时&#xff0c;进行dfs回溯 设置访问数组&#xff0c;标记已经走过的坐标 每次dfs时&#xff0c;往四个方向走&#xff0c;若当前字符不匹配则回溯&#xff0c;记得消…

【深度学习】paddlets,时序数据预测

文章目录 一、环境二、题目1三、题目2四、题目3五、函数参数 资料&#xff1a; https://paddlets.readthedocs.io/zh-cn/latest/source/api/paddlets.models.base.html#paddlets.models.base.BaseModel.recursive_predict https://aistudio.baidu.com/projectdetail/5866171?…