LVGL 控件之消息框(lv_msgbox)

ESP32 LVGL8.1 ——msgbox 消息框 (msgbox 28) 提示:本博客作为学习笔记,有错误的地方希望指正 文章目录一、textarea 简介1.1概述 Overview1.2部分和风格 Parts and Styles1.3使用 Usage1.4事件 Events1.5按键 Keys二、msgbox API三、示例3.1示例实现数字按键输入 一、textarea 简介 1.1概述 Overview   消息框充当弹出窗口。它们是由背景Container,Label和Button的Button矩阵构建的。 文本将自动分成多行(具有LV_LABEL_LONG_MOD 阅读详情
AI摘要

本文围绕 LVGL 控件中的消息框(lv_msgbox)展开。介绍了消息框由多个小部件构建,可充当弹出窗口,有模态和非模态之分。还阐述了创建消息框的函数及形参,通过示例说明模态与非模态的区别,此外,提及获取组成部分、关闭部件、部件事件及 API 函数等内容。


一、概述

消息框部件是由多个小部件构建而成的,包括:lv_obj、lv_btn、lv_label 和 lv_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()异步关闭消息框
【LVGL-消息框部件(lv_msgbox)】 【代码】【LVGL-消息框部件(lv_msgbox)】 阅读详情

相关推荐

LVGL教程:消息框msgbox控件应用场景解析

深入解析LVGL中msgbox控件的使用场景与实现方式,结合lvgl教程详细说明如何在嵌入式GUI开发中高效利用消息框提升用户交互体验,适合初学者与进阶开发者参考。

weixin_42514540的博客 412

LVGL:拓展部件——消息框 lv_msgbox

消息框表现为一种弹出式的用户界面元素。当需要向用户显示信息、警告或请求确认时,会暂时覆盖部分或全部屏幕以展示消息内容。消息框中的文本内容能够以适应空间大小,并且消息框的高度会根据实际包含的文本内容及按钮数量自动调整,确保所有内容都被适当地显示在框内。

友善啊,朋友的博客 7564

lvgl-messagebox

MessageBox(消息框)是 LVGL 提供的一个图形组件,用于向用户显示提示信息,并提供按钮让用户进行选择或确认操作。它通常包含一个标题、消息文本和一组按钮,例如 “确认”、“取消” 等。消息框可以在用户操作关键节点时弹出,提示信息或询问用户意图,是常见的 GUI 控件之一。

huanghongqi11的博客 1585

LVGL『Message box消息框控件』介绍

一. LVGL GUI消息框控件的概念 消息框充当弹出窗口。它们是由背景 Container,Label 和 Button 的 Button 矩阵构建的。文本将自动分成多行(具有 LV_LABEL_LONG_MODE_BREAK ),高度将自动设置为包含文本和按钮( LV_FIT_TIGHT 垂直适合) 二. LVGL GUI消息框小部件和样式 消息框的主要部分被调用 LV_MSGBOX_PART_MAIN ,它使用所有典型的背景样式属性。使用填充会增加侧面的空间。pad_inner 将在文本和按钮之

朝气蓬勃 1万+

LVGL消息框(lv_msgbox)实战:从基础弹窗到自定义复杂交互的完整指南

本文深入探讨了LVGL的lv_msgbox组件,从基础弹窗到高级自定义交互的完整实现。通过详细解析核心API、内容区域定制、按钮矩阵配置及高级交互模式,帮助开发者掌握嵌入式UI开发中的复杂对话框设计技巧,特别适合智能家居控制面板和工业HMI等应用场景。

weixin_30751947的博客 448

LVGL消息框(lv_msgbox)实战:从模态弹窗到自定义按钮,嵌入式UI交互设计指南

本文深入探讨LVGL消息框(lv_msgbox)在嵌入式UI设计中的高级应用,涵盖模态与非模态选择、按钮矩阵定制、动态更新技巧及交互流程优化。通过实战代码示例,展示如何提升用户交互体验,实现从基础弹窗到复杂业务场景的灵活适配。

weixin_30689307的博客 636

LVGL窗口与消息框实战:从基础创建到高级交互设计

本文深入解析LVGL窗口(Window)与消息框(Msgbox)控件的实战应用,从基础创建、样式定制到高级事件处理与交互设计。通过详细的代码示例和最佳实践,帮助开发者快速掌握嵌入式GUI开发,提升用户界面设计效率和交互体验。

b3n4m5q6w7的博客 193

LVGL lv_msgbox消息对话框(22)

lv_msgbox lv_msgbox由lv_cont容器、lv_label标签、lv_btnmatrix矩阵按键构成 样式

jiang_2018的博客 4999

HoloCubic 固件中的 lv_msgbox 消息框:Simple 与 Modal 两种形态的完整实战指南

本文以 HoloCubic 仓库中 lvgl 组件库自带的 `lv_ex_msgbox` 示例文档([index.rst](https://link.gitcode.com/i/e5e24cbcca466d5a5c3217bc8c7c4aa2))为核心,系统讲解 LVGL 消息框控件(Message box)的两种典型用法:**Simple 普通消息框**与**Modal 模态消息框**。你将通过

gitblog_00926的博客 383

别再只用lv_msgbox弹提示了!解锁LVGL消息框的5个隐藏用法与性能优化技巧

本文深入探讨了LVGL消息框(lv_msgbox)的5个隐藏用法与性能优化技巧,包括将其转化为交互式表单、异步操作消除UI卡顿、事件冒泡管理复杂逻辑、动态更新内容以及内存优化策略。这些技巧能显著提升嵌入式UI开发的效率和用户体验,特别适合需要高性能和低内存占用的应用场景。

weixin_30879833的博客 249

lvgl9 消息框控件Message(lv_message)使用指南

在图形用户界面中,消息框(Message Box)是一种常见的弹出式对话框,用于显示重要信息或与用户进行交互。LittlevGL 提供了lv_msgbox控件,它可以轻松实现此功能,包括标题、文本、关闭按钮以及操作按钮,支持模态(阻止屏幕其他部分点击)和非模态模式。通过消息框,开发者可以在不破坏当前界面的情况下提供关键信息或收集用户的反馈。lv_msgbox是一个功能强大且易于使用的控件,适合在界面中创建弹出式对话框。

m0_62599305的博客 1779

LVGL Window和Msgbox详解

`lv_win` 是一种专门用于创建窗口的对象,它可以帮助开发人员轻松实现具有标题栏、内容区和控制按钮的窗口。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 2055

079、LVGL基础控件:消息框(Msgbox)

《LVGL消息框控件深度解析与避坑指南》 文章深入剖析了LVGL消息框控件的核心特性和使用技巧。消息框本质是带按钮的模态容器,而非独立窗口。作者分享了创建消息框的正确姿势、标题/内容设置方法、安全的按钮事件处理方式(避免直接调用close函数导致栈溢出),并详细介绍了模态/非模态实现、样式自定义、动态更新等实用技巧。针对常见问题如内存管理、按钮数量限制、动画效果等给出了专业建议,特别强调了消息框作为用户交互关键环节的优化重要性,建议通过异步删除、合理父对象选择等方式提升稳定性。文章包含大量实际项目经验总结,

m0_50546716的博客 152

lvgl学习-解决不了msgbox无法显示的问题

首先,我在建立这个container_1页面的函数中,增加了一个本应该很有用的函数:lv_scr_load。向new_scr发送事件LV_EVENT_SCREEN_LOAD_START。然后lv_disp_load_scr调用lv_scr_load_anim(首先lv_scr_load直接调用lv_disp_load_scr(向new_scr发送事件LV_EVENT_SCREEN_LOADED。也就是没有动画的lv_scr_load_anim。获得当前显示器对象lv_obj_get_disp。

wow_nicetry的博客 853

改变msgBox的显示的按钮内容及其他功能

改变msgBox的显示的按钮内容及其他功能

lv_examples:LVGL嵌入式GUI库的示例,教程和应用程序

LVGL的例子 在这里,您可以找到LVGL嵌入式GUI库的示例和演示。 将示例添加到您的项目中 克隆此存储库: git clone https://github.com/lvgl/lv_examples.git 。 lv_examples目录应位于项目中lvgl目录的旁边。 与lv_conf.h类似, lv_conf.h也有一个配置文件。 它称为lv_ex_conf.h 。 将lv_examples/lv_ex_conf_templ.h复制到lv_examples目录旁边 将其重命名为lv_ex_conf.h 将第一个#if 0更改为#if 1以启用文件的内容 启用或禁用模块 例子 开始吧 如果您不熟悉LVGL,请首先检查以下示例。 他们展示了图书馆的基本机制。 请参阅文件夹。 您也可以查看LVGL的Quich以了解基础知识。 款式 LVGL具有功能强大且用途广泛的样式系统。 这些

LVGL ----list 列表控件

list 列表控件

weixin_44799641的博客 1241

置换矩阵、转置矩阵以及向量空间、子空间

置换矩阵、转置矩阵以及向量空间、子空间导读置换矩阵 导读 MIT矩阵分析课程之后的的二篇笔记。

qq_44677482的博客 1672
上一篇: STM32 通过软件模拟 I2C 驱动 24Cxx 系列存储器
下一篇: STM32 map 文件浅析
Projectsauron
博客等级 码龄4年 2587粉丝 100原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值