LVGL部件8

一.按钮矩阵部件

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);   //获取序列idprintf("%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的按钮,的相对宽度为3lv_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.hqwc.cn/news/450377.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络流数据集处理(深度学习数据处理基础)

一、数据集处理 处理数据集是一个文件夹 一个文件夹处理的,将原网络流数据集 放入一个文件夹 处理转换成 Json文件。(数据预处理)然后将这些文件处理成目标文件格式 再分割成训练集和测试集。每次运行只会处理一个文件夹。 运行train.py 导入…

备战蓝桥杯---搜索(应用入门)

话不多说,直接看题: 显然,我们可以用BFS,其中,对于判重操作,我们可以把这矩阵化成字符串的形式再用map去存,用a数组去重现字符串(相当于map映射的反向操作)。移动空格先找…

C#用正则表达式验证格式:电话号码、密码、邮编、手机号码、身份证、指定的小数点后位数、有效月、有效日

正则表达式在程序设计中有着重要的位置,经常被用于处理字符串信息。 用Regex类的IsMatch方法,使用正则表达式可以验证电话号码是否合法。 一、涉及到的知识点 Regex类的IsMatch方法用于指示正则表达式使用pattern参数中指定的正则表达式是否在输入字符串…

5种古典密码

一、凯撒密码 1.概念 将明文中的的字母表按照一定的字数进行平移进行加密。 2.加密 在凯撒密码中,按一定的字数平移是这个密码的算法,平移的字数是这个密码的密钥。 3.解密 使用与加密时相同的秘钥进行反向平移操作。暴力破解。凯撒密码的密钥是平…

百分点科技:《数据科学技术: 文本分析和知识图谱》

科技进步带来的便利已经渗透到工作生活的方方面面,ChatGPT的出现更是掀起了新一波的智能化浪潮,推动更多智能应用的涌现。这背后离不开一个朴素的逻辑,即对数据的收集、治理、建模、分析和应用,这便是数据科学所重点研究的对象——…

中科大计网学习记录笔记(五):协议层次和服务模型

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

Leetcode刷题笔记题解(C++):36. 有效的数独

思路一:暴力破解,两个二维数组记录行、列对应的数字出现的次数,比如rows[i][index]表示的数字index在i行出现的次数,三维数组记录每个块中对应数字出现的次数,比如boxes[i/3][j/3][index]表示的数字index在[i/3][j/3]个…

Git 实战场景过程(工作总结篇)

目录 前言1. Git远程仓库建立分支,本地未显示1.1 问题所示1.2 知识补充 2. Git暂存内容切换分支2.1 问题所示2.2 知识补充 3. Git放弃修改数据3.1 问题所示3.2 知识补充 4. git merge合并查看差异 前言 主要总结工作中的疑惑点,如果你也有相应的场景&am…

C++之std::tuple(一) : 使用

相关系列文章 C之std::tuple(一) : 使用 C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二):深入剖析 目录 1.简介 2.创建元组 2.1.直接初始化方式 2.2.使用花括号初始化列表方式(C11及以上版本) 2.3.make_tuple方式 2.4.使…

【MIT 6.S081】2020, 实验记录(5),Lab: lazy allocation

目录 Task 1: Eliminate allocation from sbrk()Task 2: Lazy allocationTask 3: Lazytests and Usertests 在学习了 page fault 这一节课后,了解了操作系统是如何结合 page table 和 trap 利用 page fault 来实现一系列的神奇的功能。这个 lab 就是在 XV6 中实现 l…

[SWPUCTF 2021 新生赛]easyupload2.0

一开始我通过cobaltstrike写一个文件上传的木马它不允许上传php文件 我这边写了一句话木马通过burp拦截修改后缀为phtml然后通过蚁剑找flag

【数据结构】链表OJ面试题2(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 休息一天,今天继续刷题! 2.OJ题目训练 1. 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 。链表分割_牛客题霸_牛客网 思路 既然涉及…