窗口部件(lv_win)的 API 函数详解及用法说明

以下是 LVGL 8.2 版本中窗口部件(lv_win)的 API 函数详解及用法说明,已严格适配该版本的特性:


核心 API 函数介绍

1. 创建窗口对象
lv_obj_t *lv_win_create(lv_obj_t *parent, const lv_coord_t header_height);
  • 功能: 创建一个窗口对象,包含标题栏和内容区域。
  • 参数:
    • parent: 父容器(通常为 lv_scr_act() 或其他容器)。
    • header_height: 标题栏高度(单位:像素)。
  • 返回: 窗口对象的指针。
2. 添加标题
lv_obj_t *lv_win_add_title(lv_obj_t *win, const char *txt);
  • 功能: 在窗口的标题栏中添加文本标题。
  • 参数:
    • win: 窗口对象指针。
    • txt: 标题文本。
  • 返回: 标题标签对象的指针(可用于进一步样式调整)。
3. 添加控制按钮
lv_obj_t *lv_win_add_btn(lv_obj_t *win, const void *icon, lv_coord_t btn_w);
  • 功能: 在标题栏右侧或左侧添加按钮(通常用于关闭、最小化等操作)。
  • 参数:
    • win: 窗口对象指针。
    • icon: 按钮图标(可使用 LV_SYMBOL_CLOSE 等内置符号,或自定义图像路径)。
    • btn_w: 按钮宽度(若设为 LV_SIZE_CONTENT 则自动适配图标大小)。
  • 返回: 按钮对象的指针(需手动绑定事件回调)。
4. 获取内容区域
lv_obj_t *lv_win_get_content(lv_obj_t *win);
  • 功能: 获取窗口的内容区域对象,用于向其中添加子部件(如标签、按钮等)。
  • 参数:
    • win: 窗口对象指针。
  • 返回: 内容区域的容器对象指针。

典型用法示例

// 创建窗口(标题栏高度40像素)
lv_obj_t *win = lv_win_create(lv_scr_act(), 40);

lv_obj_set_size(win, 300, 200); // 设置初始大小
lv_obj_align(win, LV_ALIGN_CENTER, 0, 0);

// 添加标题
lv_win_add_title(win, "Settings");

// 添加关闭按钮(右侧)
lv_obj_t *close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE, 30);
lv_obj_add_event_cb(close_btn, close_btn_event_handler, LV_EVENT_CLICKED, win); // 绑定点击事件

// 获取内容区域并添加控件
lv_obj_t *content = lv_win_get_content(win);
lv_obj_t *label = lv_label_create(content);
lv_label_set_text(label, "Window Content Area");
lv_obj_center(label);

注意事项

  1. 事件处理

    • 按钮需通过 lv_obj_add_event_cb 绑定事件(如 LV_EVENT_CLICKED),在回调函数中实现逻辑(如关闭窗口)。
    • 关闭窗口示例回调:
      void close_btn_event_handler(lv_event_t *e) {
          lv_obj_t *btn = lv_event_get_target(e);
          lv_obj_t *win = lv_event_get_user_data(e);
          lv_obj_del(win); // 销毁窗口
      }
      
  2. 布局管理

    • 内容区域默认无自动布局,需手动设置布局(如 lv_obj_set_flex_flow(content, LV_FLEX_FLOW_COLUMN))。
  3. 样式定制

    • 通过 lv_win_get_header(win) 获取标题栏对象,单独修改其样式。
    • 使用 lv_style_set_xxx 调整窗口背景、边框等属性。

版本适配说明

  • LVGL 8.2 特性:窗口部件无内置的“最大化/最小化”功能,需手动实现。
  • 与后续版本区别:LVGL 8.3+ 中部分 API 名称或参数可能变化(如 lv_win_add_button 更名为 lv_win_add_btn_right),请勿混淆。

通过上述 API 和示例,可高效创建和管理 LVGL 8.2 的窗口部件,确保代码兼容性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九层指针

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值