LVGL 控件之消息框(lv_msgbox)


一、概述

消息框部件是由多个小部件构建而成的,包括:lv_objlv_btnlv_labellv_btnmatrix 部件,示意图如下所示:

消息框充当弹出窗口。它们由一个内容区域构建而成,该区域有一个辅助工具用于添加文本,一个可选的头部(可以包含标题、关闭按钮和其他按钮),以及一个可选的底部配有按钮。

文本将被自动折行为多行,并且高度将被自动设置。如果手动设置了高度,内容将变为可滚动的。

消息框可以是模态的(阻止对屏幕其余部分的单击) 或者不是模态的。

二、消息框

1、创建消息框

用户需要创建消息框部件,可以调用 lv_msgbox_create 函数,该函数具有五个形参,如下所示:

  1. parent:父对象,如果该形参为 NULL,则该消息框部件为模态;
  2. title:消息框的标题;
  3. txt:消息框的文本;
  4. btn_txts[]:按钮文本的数组;
  5. add_close_btn:添加/不添加关闭按钮。

接下来,我们以简单示例来理解消息框的创建,示例代码如下所示:

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

void my_gui(void)
{
    lv_obj_t *lv_msgbox = lv_msgbox_create(lv_scr_act(), "Title", "Context", btns, true);

    lv_obj_center(lv_msgbox);
}

模态与非模态

模态就是阻止对屏幕其余部分的单击,反之,非模态就是不阻止。下面看例子:

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

void my_gui(void)
{
    lv_obj_t *lv_msgbox = lv_msgbox_create(lv_scr_act(), "Title", "Context", btns, true);
    lv_obj_t *btn = lv_btn_create(lv_scr_act());
    lv_obj_set_pos(btn, 400, 100);

    lv_obj_center(lv_msgbox);
}


这个时候还能点击上面的蓝色的按钮,所以此消息框是非模态的。

而做出如下修改后:

lv_obj_t *lv_msgbox = lv_msgbox_create(NULL, "Title", "Context", btns, true);

除消息框的其它地方都加了一层灰色的阴影,而上面的按钮也无法点击了。这个时候,这个消息框就是模态的。

2、获取消息框的组成部分

前面讲了消息框的组成部分。如果用户需要设置这些组成部分的样式,则需要先将它们获取回来,获取组成部分的相关函数如下:

lv_obj_t * lv_msgbox_get_title(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_close_btn(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_text(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_btns(lv_obj_t * mbox);

3、关闭消息框部件

如果用户想手动关闭消息框,可调用 lv_msgbox_close 函数进行设置。

4、消息框部件事件

消息框部件常用的事件类型为 LV_EVENT_VALUE_CHANGED

5、API 函数

函数描述
lv_msgbox_create()创建消息框部件
lv_msgbox_get_title()获取消息框标题文本对象
lv_msgbox_get_close_btn()获取关闭按钮对象
lv_msgbox_get_text()获取提示文本对象
lv_msgbox_get_content()获取消息框内容对象
lv_msgbox_get_btns()获取按键矩阵对象
lv_msgbox_get_active_btn()获取当前按下的按钮索引
lv_msgbox_get_active_btn_text()获取当前按下的按钮文本
lv_msgbox_close()关闭消息框
lv_msgbox_close_async()异步关闭消息框
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值