LVGL部件8

news2024/9/25 11:19:29

一.按钮矩阵部件

1.知识概览

![2024-02-03T12:40:25.png][1]

![2024-02-03T12:40:54.png][2]

![2024-02-03T13:01:18.png][3]

![2024-02-03T13:25:43.png][4]

2.函数接口

1.lv_btnmatrix_set_btn_ctrl
在 LVGL(LittlevGL)中,lv_btnmatrix_set_btn_ctrl() 函数用于设置按钮矩阵(Button Matrix)中单个按钮的控制选项。该函数可以用来定制按钮矩阵中按钮的行为、样式和其他属性。

以下是 lv_btnmatrix_set_btn_ctrl() 函数的函数原型:

void lv_btnmatrix_set_btn_ctrl(lv_obj_t * btnmatrix, uint32_t btn_id, lv_btn_state_t state, lv_btn_ctrl_t ctrl);

参数说明:

  • btnmatrix:按钮矩阵对象
  • btn_id:按钮的索引
  • state:按钮状态(例如 LV_BTNMATRIX_CTRL_CHECKEDLV_BTNMATRIX_CTRL_DISABLED 等等)
  • ctrl:按钮控制选项(例如 LV_BTNMATRIX_CTRL_HIDDENLV_BTNMATRIX_CTRL_NO_REPEAT 等等)

通过调用这个函数,可以针对特定的按钮矩阵中的按钮设置不同的控制选项。这样可以实现诸如隐藏、禁用、重复等特殊行为。

注意,在使用这个函数之前,需要先创建一个按钮矩阵对象,并确保按钮矩阵中按钮的数量和索引是正确的。

示例代码如下所示:

// 创建一个按钮矩阵对象
lv_obj_t *btnmatrix = lv_btnmatrix_create(lv_scr_act(), NULL);

// 设置按钮矩阵的大小和位置
lv_obj_set_size(btnmatrix, 200, 200);
lv_obj_set_pos(btnmatrix, 50, 50);

// 设置第一个按钮为禁用状态
lv_btnmatrix_set_btn_ctrl(btnmatrix, 0, LV_BTNMATRIX_CTRL_CHECKED, false);

在这个示例中,我们使用 lv_btnmatrix_create() 函数创建了一个按钮矩阵对象,并进行了基本的设置。然后,使用 lv_btnmatrix_set_btn_ctrl() 函数将第一个按钮的状态设置为禁用(LV_BTNMATRIX_CTRL_CHECKEDfalse)。这样可以禁用第一个按钮。

2.lv_btnmatrix_set_btn_width

lv_btnmatrix_set_btn_width() 函数用于设置按钮矩阵(Button Matrix)中按钮的宽度。通过调用此函数,您可以为按钮矩阵中的每个按钮指定特定的宽度。

以下是 lv_btnmatrix_set_btn_width() 函数的函数原型:

void lv_btnmatrix_set_btn_width(lv_obj_t * btnm, uint8_t btn_id, uint8_t width);

参数说明:

  • btnm:按钮矩阵对象
  • btn_id:按钮的索引
  • width:按钮的宽度,以像素为单位

使用该函数之前,您需要先创建一个按钮矩阵对象,并确保按钮矩阵中按钮的数量和索引是正确的。

示例代码如下所示:

// 创建一个按钮矩阵对象
lv_obj_t *btnmatrix = lv_btnmatrix_create(lv_scr_act(), NULL);

// 设置按钮矩阵的大小和位置
lv_obj_set_size(btnmatrix, 200, 200);
lv_obj_set_pos(btnmatrix, 50, 50);

// 将第一个按钮的宽度设置为 50 像素
lv_btnmatrix_set_btn_width(btnmatrix, 0, 50);

在上述示例中,创建了一个按钮矩阵对象,并设置了其大小和位置。然后,使用 lv_btnmatrix_set_btn_width() 函数将第一个按钮的宽度设置为 50 像素。

注意,上述示例仅为示范目的,您可以根据您的需求为按钮矩阵中的任何按钮设置不同的宽度。

3.代码实例

static void event_cb(lv_event_t *e)
{
    lv_obj_t* target=lv_event_get_target(e);  //获取触发源
    uint8_t id=lv_btnmatrix_get_selected_btn(target);   //获取序列id
    printf("%s",lv_btnmatrix_get_btn_text(target,id));  //获取文本


}

void my_lvgl(void)
{
    lv_obj_t* btnm=lv_btnmatrix_create(lv_scr_act());   //按钮矩阵部件

    static const char* map[]={"#ff0000 btn1#","\n","btn2","btn2"};  //设置按钮数量和文本
    lv_btnmatrix_set_map(btnm,map);
    lv_btnmatrix_set_btn_width(btnm,2,3);     //设置序号2的按钮,的相对宽度为3
    lv_obj_add_event_cb(btnm,event_cb,LV_EVENT_VALUE_CHANGED,NULL);  //设置值改变的时候触发事件
    lv_btnmatrix_set_btn_ctrl(btnm,0,LV_BTNMATRIX_CTRL_CHECKABLE);     //设置允许状态切换属性
    lv_btnmatrix_set_btn_ctrl(btnm,0,LV_BTNMATRIX_CTRL_RECOLOR);     //设置允许文本重新着色
    lv_btnmatrix_set_btn_ctrl_all(btnm,LV_BTNMATRIX_CTRL_CHECKABLE);     //设置允许所有状态切换属性
    lv_btnmatrix_set_one_checked(btnm,true);   //开启单次选中属性
    
}

二.文本区域部件

1.知识概览

![2024-02-03T13:33:50.png][5]

![2024-02-03T13:34:52.png][6]

![2024-02-03T13:51:58.png][7]

![2024-02-03T14:03:23.png][8]

2.函数接口

1.lv_textarea_set_one_line

lv_textarea_set_one_line() 函数用于设置文本区域(Textarea)是否限制为单行显示。

以下是 lv_textarea_set_one_line() 函数的函数原型:

void lv_textarea_set_one_line(lv_obj_t * textarea, bool one_line);

参数说明:

  • textarea:文本区域对象
  • one_line:设置为 true 表示文本区域只显示单行,设置为 false 表示可以显示多行

使用该函数之前,您需要先创建一个文本区域对象。

示例代码如下所示:

// 创建一个文本区域对象
lv_obj_t *textarea = lv_textarea_create(lv_scr_act(), NULL);

// 设置文本区域的大小和位置
lv_obj_set_size(textarea, 200, 100);
lv_obj_set_pos(textarea, 50, 50);

// 设置文本区域为单行显示
lv_textarea_set_one_line(textarea, true);

以上示例中,创建了一个文本区域对象,并设置了其大小和位置。然后,使用 lv_textarea_set_one_line() 函数将文本区域设置为单行显示。

注意,如果设置为单行显示,文本区域的内容会根据文本框的宽度自动换行。如果设置为多行显示,则文本区域可以显示多行文本。

2.lv_textarea_set_password_mode

lv_textarea_set_password_mode() 函数用于将文本区域(Textarea)设置为密码模式,以隐藏用户输入的内容。

以下是 lv_textarea_set_password_mode() 函数的函数原型:

void lv_textarea_set_password_mode(lv_obj_t * textarea, bool password_mode);

参数说明:

  • textarea:文本区域对象
  • password_mode:设置为 true 表示启用密码模式,设置为 false 表示禁用密码模式

使用该函数之前,您需要先创建一个文本区域对象。

示例代码如下所示:

// 创建一个文本区域对象
lv_obj_t *textarea = lv_textarea_create(lv_scr_act(), NULL);

// 设置文本区域的大小和位置
lv_obj_set_size(textarea, 200, 100);
lv_obj_set_pos(textarea, 50, 50);

// 将文本区域设置为密码模式
lv_textarea_set_password_mode(textarea, true);

在上述示例中,我们创建了一个文本区域对象,并设置了其大小和位置。然后,使用 lv_textarea_set_password_mode() 函数将文本区域设置为密码模式。

当文本区域设置为密码模式时,用户输入的内容将会被隐藏,以保护用户的隐私和安全。通常在需要输入密码的场景中使用密码模式。

3.代码实例

#include "my_lvgl.h"
#include "lvgl.h"


static void event_cb(lv_event_t *e)
{
    lv_obj_t* target=lv_event_get_target(e);
    const char* txt=lv_textarea_get_text(target);//获取文本
    printf("%s\n",txt);
}
//LV_EVENT_FOCUSED  判断是否聚焦到文本框,然后绑定键盘
void my_lvgl(void)
{
    lv_obj_t* ba=lv_textarea_create(lv_scr_act());   //文本区域组件
    lv_textarea_add_char(ba,'A');//添加一个字符
    lv_textarea_add_text(ba,"BCD");//添加一个字符串

    lv_obj_t* keyboard=lv_keyboard_create(lv_scr_act());   //键盘组件
    lv_keyboard_set_textarea(keyboard,ba);   //绑定键盘组件和文本组件
   // lv_textarea_set_cursor_pos(ba,0); //输入到光标左侧

    lv_textarea_del_char(ba);   //删除光标左侧的一个字符
    lv_textarea_del_char_forward(ba);   //删除光标友侧的一个字符
    lv_textarea_set_one_line(ba,true);  //设置单行模式
    lv_textarea_set_password_mode(ba,true);  //设置密码模式
    lv_textarea_set_password_show_time(ba,100);//设置密码显示时间
    lv_textarea_set_accepted_chars(ba,"0123456789");  //设置限制输入
    lv_textarea_set_max_length(ba,6);  //设置长度


    lv_textarea_set_placeholder_text(ba,"password");   //输入占位符

    lv_obj_add_event_cb(ba,event_cb,LV_EVENT_VALUE_CHANGED,NULL);  //设置值改变的时候触发事件

}

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

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

相关文章

寒假作业2月3号

第二章 引用内联重载 一.选择题 1、适宜采用inline定义函数情况是(C) A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用 2、假定一个函数为A(int i4, int j0) {;}, 则执行“A (1);”语句…

【蓝桥杯】环形链表的约瑟夫问题

目录 题目描述: 输入描述: 输出描述: 示例1 解法一(C): 解法二(Cpp): 正文开始: 题目描述: 据说著名犹太历史学家 Josephus 有过以下故事&a…

UE4 C++ 枚举类型

先在UCLASS()前写入: //定义枚举变量:方法一 UENUM(BlueprintType) //BlueprintType:在蓝图中可显示、创建该枚举变量 namespace MyEnumType //namespace:命名空间,支持同样的变量命令、便于访问//MyEnumType&#xf…

如何保证MySQL和Redis中的数据一致性?

文章目录 前言一、缓存案例1.1 缓存常见用法1.2 缓存不一致产生的原因 二、解决方案2.1 先删除缓存,再更新数据库2.2 先更新数据库,删除缓存2.3 只更新缓存,由缓存自己同步更新数据库2.4 只更新缓存,由缓存自己异步更新数据库2.5 …

【MybatisPlus篇】查询条件设置(范围匹配 | 模糊匹配 | 空判定 | 包含性判定 | 分组 | 排序)

文章目录 🎄环境准备⭐导入依赖⭐写入User类⭐配置启动类⭐创建UserDao 的 MyBatis Mapper 接口,用于定义数据库访问操作⭐创建配置文件🛸创建测试类MpATest.java 🍔范围查询⭐eq⭐between⭐gt 🍔模糊匹配⭐like &…

力扣之2629.复合函数(reduceRight )

/*** param {Function[]} functions* return {Function}*/ var compose function(functions) {return function(x) {return functions.reduceRight((result, func) > func(result), x);} };/*** const fn compose([x > x 1, x > 2 * x])* fn(4) // 9*/ 说明&#x…

docker 容器指定主机网段

docker 容器指定主机网段。 直接连接到物理网络:使用macvlan技术可以让Docker容器直接连接到物理网络,而不需要通过NAT或端口映射的方式来访问它们。可以提高网络性能和稳定性,同时也可以使容器更加透明和易于管理。 1、查询网卡的名称&…

微软Office Plus与WPS Office的较量:办公软件市场将迎来巨变?

微软Office Plus在功能表现上远超WPS Office? 微软出品的Office套件实力强劲,其不仅在办公场景中扮演着不可或缺的角色,为用户带来高效便捷的体验,而且在娱乐生活管理等多元领域中同样展现出了卓越的应用价值 作为中国本土办公软…

c语言--求第n个斐波那契数列(递归、迭代)

目录 一、概念二、用迭代求第n个斐波那契数1.分析2.完整代码3.运行结果4.如果求第50个斐波那契数呢?看看会怎么样。4.1运行结果:4.2画图解释 三、用迭代的方式求第n个斐波那契数列1.分析2.完整代码3.运行结果4.求第50个斐波那契数4.1运行结果4.2运行结果…

基于粒子群算法的多无人机任务分配

python3.6以上正常运行 基于粒子群算法的多无人机任务分配资源-CSDN文库

在Flutter中调用Android的代码

参考 【Flutter 混合开发】嵌入原生View-Android 默认使用Android studio 和 Kotlin 基本配置 创建flutter项目 在终端执行 flutter create batterylevel添加 Android 平台的实现 打开项目下的android/app/src/main/kotlin 下的 MainActivity.kt 文件。 我这里编辑器有…

开源的三维算法库有哪些

PCL,VTK,VCG,CGAL,Open CASCADE(opencascade),OpenSceneGraph (OSG),Easy3D 点云网格处理算法:openmesh, meshlab三维算法库,Eigen 网格简化,网格平滑,网格参数化 无序…

北朝隋唐文物展亮相广西,文物预防性保护网关保驾护航

一、霸府名都——太原博物馆收藏北朝隋朝文物展 2月1日,广西民族博物馆与太原博物馆携手,盛大开启“霸府名都——太原博物馆北朝隋文物展”。此次新春展览精选了北朝隋唐时期150多件晋阳文物珍品。依据“巍巍雄镇”“惊世古冢”“锦绣名都”三个单元&am…

Java swing —— 创建一个窗口

swing组件分类: 顶层容器:JFrame、JApplet、JDialog、JWindow 中间容器:JPanel、JScrollPane、JSplitPane、JToolBar 基本控件: ImageIcon(图标),JLabel(标签)&#xff…

【数据结构】分治策略

现场保护和现场恢复 文章目录 分治策略分治法解决问题有以下四个特征:分治法步骤: 递归:解决以下问题:倒序输出整数求最大公约数(递归和非递归)菲波那切数列 不要尝试间接 要使用直接递归(自己调用自己&am…

代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合

仅做学习笔记,详细请访问代码随想录 ● 理论基础 ● 77. 组合 ● 理论基础 回溯法解决的问题 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合 切割问题:一个字符串按一定规则有几…

SpringBoot统一功能处理,拦截器,统一数据格式,捕捉异常

目录 拦截器:是Spring框架提供的核心功能之一,主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码: 自定义拦截器 统一数据格式,要包含状态码,错误信息​编辑 出现针对String类型的错误​​​…

MySQL查询缓存

MySQL查询缓存 MySQL在查询的时候首先会查询缓存,如果缓存命中的话就直接返回结果,不需要解析sql语句,也不会生成执行计划,更不会执行;如果没有命中缓存,则再进行SQL解析以及进行查询,并将结果返…

CodeFuse成功支持通义千问算法大赛,评测方案已开源

前段时间, 首届通义千问AI挑战赛成功举办,CodeFuse 为大赛提供技术支持,模型微调框架 MFTCoder 和 CodeFuseEval 评测框架为大赛保驾护航,助力大赛圆满完成。我们基于leetcode 阿里和蚂蚁最新面试题库建设了“模型赛马”在线打榜的…

NC、NC65、NCC富客户端附件在线预览插件

NC附件目前只支持下载,不支持在线查看 通过二开实现NC的附件可以在线预览 支持的格式包含:doc, docx, xls, xlsx, ppt, pptx, pdf和txt等。