当前位置: 首页 > article >正文

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

文章目录

    • 前言
      • 1. **控件概述**
      • 2. **控件的样式和组成部分**
      • 3. **使用场景**
      • 4. **创建消息框**
        • 基本用法
        • 设置模态模式
      • 5. **获取消息框组件**
      • 6. **关闭消息框**
      • 7. **事件处理**
      • 8. **键盘支持**
      • 9. **示例代码**
    • 总结


前言

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


1. 控件概述

lv_msgbox 是一种弹出式控件,由以下元素组成:

  • 背景容器:显示消息框的边界和背景。
  • 标题:用于显示消息框的标题。
  • 关闭按钮(可选):用于快速关闭消息框。
  • 文本:消息内容,可自动换行。
  • 操作按钮(可选):用于接收用户输入或操作。

此外,消息框可以根据需要设置为模态或非模态。模态消息框会阻止用户与其他屏幕元素交互,而非模态消息框允许其他控件正常工作。


2. 控件的样式和组成部分

消息框本质上是由其他控件组合而成,因此可以通过这些控件的文档进一步了解样式设置:

  • 背景:参考 lv_obj.h
  • 关闭按钮:参考 lv_button.h
  • 标题与文本:参考 lv_label.h
  • 按钮矩阵:参考 lv_buttonmatrix.h

这些部分可以单独获取,以便精细地调整其样式和功能。


3. 使用场景

消息框控件适用于以下常见场景:

  • 信息提示:用于向用户展示重要信息,例如通知、警告或错误消息。
  • 用户确认:提供多个按钮选项,收集用户的选择,例如“确定”或“取消”。
  • 模态交互:阻止用户与界面其他部分交互,直到做出选择或关闭消息框。
  • 临时输入框:可以包含按钮供用户快速操作,例如提交或关闭。

4. 创建消息框

基本用法

通过 lv_msgbox_create(parent, title, txt, btn_txts[], add_close_btn) 创建消息框。参数说明如下:

  • parent:消息框的父控件。如果为 NULL,消息框会以模态方式显示。
  • title:消息框的标题字符串。
  • txt:消息框显示的文本内容。
  • btn_txts[]:一个包含按钮文本的字符串数组。例如,const char *btn_txts[] = {"Ok", "Cancel", NULL};
  • add_close_btn:布尔值,是否添加关闭按钮。

示例代码:

const char *btn_txts[] = {"Ok", "Cancel", NULL};
lv_obj_t *msgbox = lv_msgbox_create(NULL, "Title", "This is a message", btn_txts, true);
设置模态模式

parent 参数为 NULL 时,消息框将以模态模式显示,阻止用户点击界面的其他部分。否则,消息框为非模态。


5. 获取消息框组件

消息框的子元素可以单独获取以便进一步操作,使用以下函数:

  • 获取标题对象:lv_msgbox_get_title(msgbox)
  • 获取关闭按钮对象:lv_msgbox_get_close_btn(msgbox)
  • 获取文本对象:lv_msgbox_get_text(msgbox)
  • 获取按钮矩阵对象:lv_msgbox_get_btns(msgbox)

示例代码:

lv_obj_t *title = lv_msgbox_get_title(msgbox);  // 获取标题对象
lv_obj_t *text = lv_msgbox_get_text(msgbox);    // 获取文本对象

6. 关闭消息框

通过 lv_msgbox_close(msgbox) 可以关闭并删除消息框。

lv_msgbox_close(msgbox);  // 关闭消息框

7. 事件处理

消息框的按钮触发 LV_EVENT_VALUE_CHANGED 事件。当按钮被点击时,可以通过以下函数获取被点击的按钮索引和文本:

  • 获取被点击按钮的索引:lv_msgbox_get_active_button(msgbox)
  • 获取被点击按钮的文本:lv_msgbox_get_active_button_text(msgbox)

示例代码:

void event_handler(lv_event_t *e) {
    lv_obj_t *msgbox = lv_event_get_current_target(e);
    const char *btn_text = lv_msgbox_get_active_button_text(msgbox);
    printf("Button clicked: %s\n", btn_text);
}

8. 键盘支持

消息框支持对关闭按钮和按钮矩阵的键盘交互。如果需要,可以将它们手动添加到输入设备组中,以响应键盘事件。


9. 示例代码

以下是一个简单的消息框示例:

void event_handler(lv_event_t *e) {
    lv_obj_t *msgbox = lv_event_get_current_target(e);
    const char *btn_text = lv_msgbox_get_active_button_text(msgbox);
    printf("Button clicked: %s\n", btn_text);
    lv_msgbox_close(msgbox);  // 点击后关闭消息框
}

void create_msgbox() {
    const char *btn_txts[] = {"Yes", "No", "Cancel", NULL};
    lv_obj_t *msgbox = lv_msgbox_create(NULL, "Confirm", "Are you sure?", btn_txts, true);
    lv_obj_center(msgbox);
    lv_obj_add_event_cb(msgbox, event_handler, LV_EVENT_VALUE_CHANGED, NULL);
}

此示例创建了一个模态消息框,用户点击任意按钮后会输出对应的按钮文本,并关闭消息框。


总结

lv_msgbox 是一个功能强大且易于使用的控件,适合在界面中创建弹出式对话框。它的模态功能可以强制用户完成操作或关闭消息框后再继续交互,同时它也支持丰富的样式和事件处理,能够满足多种需求。从简单的通知到复杂的用户输入交互,lv_msgbox 都能够提供强大的支持,是嵌入式 GUI 开发中不可或缺的工具。


http://www.kler.cn/a/427463.html

相关文章:

  • macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表
  • 学习23种设计模式
  • 刷算法心得
  • 人工智能在云计算中的运维优化:智能化的新时代
  • 本文介绍麒麟信安服务器系统(kylinsec)的安装。
  • R语言使用“纽约市数据集中的优步皮卡”数据创建不同年度时间范围的可视化
  • https/http访问接口工具类,附带ssl忽略证书验证,以及head头部的添加-java版
  • [241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板
  • Python编程语言学习书籍和课程建议
  • Java Serializable 序列化
  • 【Copilot 】TAB keybinding not working on JetBrains Client
  • 梯度下降法求解局部最小值深入讨论以及 Python 实现
  • Android H5调起微信支付宝支付
  • ip所属地址是什么意思?怎么改ip地址归属地
  • CmakeLists学习刨根问底
  • 洛谷P4913 【深基16.例3】二叉树深度(c嘎嘎)
  • 普及组集训图论--判断负环
  • HarmonyOS 5.0应用开发——UIAbility跳转
  • Java --- 注解(Annotation)
  • 【SpringBoot】StopWatch工具类的使用