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

LVGL(lv_checkbox复选框按键)

文章目录

    • 🧩 一、`lv_checkbox` 是什么?
    • ✅ 二、如何使用 `lv_checkbox`
      • 1️⃣ 创建 checkbox
      • 2️⃣ 设置或获取勾选状态
      • 3️⃣ 添加事件回调
    • 🧪 三、完整示例
    • 🎨 四、样式自定义(可选)
    • 📌 五、典型应用场景
    • ⚠️ 六、注意事项


当然可以!lv_checkbox 是 LVGL 中的复选框控件,常用于表示“开 / 关”或“已选 / 未选”的状态,允许用户选择一个或多个选项


🧩 一、lv_checkbox 是什么?

它是一个带文字的方形框,状态可以是:

  • ✅ 已勾选
  • ⬜ 未勾选
  • 🛑 禁用状态(不能点)

通常用于设置选项、表单、条款同意等场景。


✅ 二、如何使用 lv_checkbox

1️⃣ 创建 checkbox

lv_obj_t * cb = lv_checkbox_create(lv_scr_act());
lv_checkbox_set_text(cb, "我已阅读并同意");
lv_obj_align(cb, LV_ALIGN_CENTER, 0, 0);

你也可以在创建时直接设置文本(从 v8.1 起):

lv_obj_t * cb = lv_checkbox_create(lv_scr_act());
lv_label_set_text(lv_obj_get_child(cb, 1), "同意条款");

2️⃣ 设置或获取勾选状态

// 设置勾选
lv_obj_add_state(cb, LV_STATE_CHECKED);// 清除勾选
lv_obj_clear_state(cb, LV_STATE_CHECKED);// 是否已勾选?
bool is_checked = lv_obj_has_state(cb, LV_STATE_CHECKED);

3️⃣ 添加事件回调

void checkbox_event_cb(lv_event_t * e) {lv_obj_t * cb = lv_event_get_target(e);bool checked = lv_obj_has_state(cb, LV_STATE_CHECKED);const char * txt = lv_label_get_text(lv_obj_get_child(cb, 1));printf("复选框【%s】现在是:%s\n", txt, checked ? "已勾选" : "未勾选");
}lv_obj_add_event_cb(cb, checkbox_event_cb, LV_EVENT_VALUE_CHANGED, NULL);

🧪 三、完整示例

void lv_example_checkbox() {lv_obj_t * cb1 = lv_checkbox_create(lv_scr_act());lv_checkbox_set_text(cb1, "我已阅读用户协议");lv_obj_align(cb1, LV_ALIGN_TOP_LEFT, 10, 10);lv_obj_add_event_cb(cb1, checkbox_event_cb, LV_EVENT_VALUE_CHANGED, NULL);lv_obj_t * cb2 = lv_checkbox_create(lv_scr_act());lv_checkbox_set_text(cb2, "订阅邮件");lv_obj_align(cb2, LV_ALIGN_TOP_LEFT, 10, 50);lv_obj_add_event_cb(cb2, checkbox_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
}

🎨 四、样式自定义(可选)

你可以为复选框添加自定义颜色、边框等样式:

lv_obj_set_style_bg_color(cb1, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR);
lv_obj_set_style_text_color(cb1, lv_color_black(), 0);

也可以设置字体大小、对齐方式等。


📌 五、典型应用场景

场景示例
用户协议“我已阅读并同意…”
设置选项“启动时自动登录”
批量选择文件列表中多选
表单“接收通知”、“隐藏密码”

⚠️ 六、注意事项

  • lv_checkbox 只能显示一个方框和一段文字,不能像 lv_list 那样显示复杂内容。
  • 不支持单独修改 icon(可以自定义绘图或重写样式实现)。

相关文章:

  • MySQL 全量、增量备份与恢复
  • RabbitMQ ③-Spring使用RabbitMQ
  • 段错误(Segmentation Fault)总结
  • Java MVC
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
  • Java使用POI+反射灵活的控制字段导出Excel
  • 18.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points_interleaved
  • 神经网络初步学习——感知机
  • 《步进电机最小转速终极指南:从理论到实战,突破低速极限的5大秘技》
  • 了解神经网络声音定制,实现多情绪、多语言演绎
  • 推理加速新范式:火山引擎高性能分布式 KVCache (EIC)核心技术解读
  • 搜索二维矩阵 II 算法讲解
  • 矩阵置零算法讲解
  • 使用 AddressSanitizer 检测栈内存越界错误
  • 什么是数据集市(Data Mart)?
  • 如何查看电脑处理器配置 电脑处理器查看方法
  • Koa知识框架
  • 菊厂0510面试手撕题目解答
  • 一、HAL库的设计理念详解:从架构到实践
  • 简述DNS域名服务器
  • 时隔4年多,这一次普京和泽连斯基能见面吗?
  • 城市轨道交通安全、内河港区布局规划、扎实做好防汛工作……今天的上海市政府常务会议研究了这些重要事项
  • 宁德时代港股募资预计最高至50亿美元:90%将投向匈牙利项目
  • 中国一重集团有限公司副总经理陆文俊被查
  • 红场阅兵即将开始!中国人民解放军仪仗队亮相
  • 援藏博士张兴堂已任西藏农牧学院党委书记、副校长