LVGL部件8

一.按钮矩阵部件

1.知识概览

LVGL部件8_第1张图片

LVGL部件8_第2张图片

LVGL部件8_第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.知识概览

LVGL部件8_第4张图片

LVGL部件8_第5张图片

LVGL部件8_第6张图片

LVGL部件8_第7张图片

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);  //设置值改变的时候触发事件

}

你可能感兴趣的:(LVGL,单片机,lvgl,gui,LVGL)