目录
- 一、概述
- 二、消息框
- 1、创建消息框
- 2、获取消息框的组成部分
- 3、关闭消息框部件
- 4、消息框部件事件
- 5、API 函数
一、概述
消息框部件是由多个小部件构建而成的,包括:lv_obj
、lv_btn
、lv_label
和 lv_btnmatrix
部件,示意图如下所示:
消息框充当弹出窗口。它们由一个内容区域构建而成,该区域有一个辅助工具用于添加文本,一个可选的头部(可以包含标题、关闭按钮和其他按钮),以及一个可选的底部配有按钮。
文本将被自动折行为多行,并且高度将被自动设置。如果手动设置了高度,内容将变为可滚动的。
消息框可以是模态的(阻止对屏幕其余部分的单击) 或者不是模态的。
二、消息框
1、创建消息框
用户需要创建消息框部件,可以调用 lv_msgbox_create
函数,该函数具有五个形参,如下所示:
parent
:父对象,如果该形参为 NULL,则该消息框部件为模态;title
:消息框的标题;txt
:消息框的文本;btn_txts[]
:按钮文本的数组;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() | 异步关闭消息框 |