LVGL 窗口

窗口(lv_win)是类似 容器(lv_cont) 的对象,由带有标题和按钮的标题以及内容区域构建而成。

零件和样式

主要部分是 LV_WIN_PART_BG ,它包含另外两个实际部分:

  • LV_WIN_PART_HEADER 顶部的标题容器,带有标题和控制按钮
  • LV_WIN_PART_CONTENT_SCRL 页眉下方内容的页面可滚动部分。

除此之外, LV_WIN_PART_CONTENT_SCRL 还有一个滚动条,称为 LV_WIN_PART_CONTENT_SCRL 。阅读 页面(lv_page) 的文档以获取有关滚动条的更多详细信息。

所有部分均支持典型的背景属性。标题使用标题部分的Text属性。

控制按钮的高度为:标头高度-标头padding_top-标头padding_bottom。

窗口标题

窗口上有一个标题,可以通过以下方式修改 lv_win_set_title(win, "New title")

控制按钮

可以使用以下命令将控制按钮添加到窗口标题的右侧: lv_win_add_btn_right(win, LV_SYMBOL_CLOSE) ,要在窗口标题的左侧添加按钮,请使用lv_win_add_btn_left(win,LV_SYMBOL_CLOSE)。第二个参数是图像源,因此它可以是符号,指向lv_img_dsc_t变量的指针或文件的路径。

可以使用 lv_win_add_btn_left(win, LV_SYMBOL_CLOSE) 设置按钮的宽度。如果 w == 0 ,则按钮将为正方形。

lv_win_close_event_cb 可以用作关闭窗口的事件回调。

滚动条

可以通过 lv_win_set_scrlbar_mode(win, LV_SCRLBAR_MODE_...) 设置滚动条行为。有关详细信息,请参见 。

手动滚动和聚焦

要直接滚动窗口,可以使用 lv_win_scroll_hor(win, dist_px)lv_win_scroll_ver(win, dist_px)

要使窗口在其上显示对象,请使用 lv_win_focus(win, child, LV_ANIM_ON/OFF)

滚动和焦点动画的时间可以使用 lv_win_set_anim_time(win, anim_time_ms) 进行调整



布局

要设置内容的布局,请使用 lv_win_set_layout(win, LV_LAYOUT_...) 。有关详细信息,请参见 容器(lv_cont) 。

事件

仅支持 通用事件

了解有关 事件 的更多内容。

按键处理

窗口可处理以下按键:

  • LV_KEY_RIGHT/LEFT/UP/DOWN 滚动页面

了解有关 按键 的更多内容。

范例

简单的窗口

LVGL简单的窗口

上述效果的示例代码:

#include "../../../lv_examples.h"
#if LV_USE_WIN

void lv_ex_win_1(void)
{
    /*Create a window*/
    lv_obj_t * win = lv_win_create(lv_scr_act(), NULL);
    lv_win_set_title(win, "Window title");                        /*Set the title*/


    /*Add control button to the header*/
    lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE);           /*Add close button and use built-in close action*/
    lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);
    lv_win_add_btn(win, LV_SYMBOL_SETTINGS);        /*Add a setup button*/

    /*Add some dummy content*/
    lv_obj_t * txt = lv_label_create(win, NULL);
    lv_label_set_text(txt, "This is the content of the window\n\n"
                           "You can add control buttons to\n"
                           "the window header\n\n"
                           "The content area becomes\n"
                           "automatically scrollable is it's \n"
                           "large enough.\n\n"
                           " You can scroll the content\n"
                           "See the scroll bar on the right!");
}

#endif
赞(2)
未经允许不得转载:极客笔记 » LVGL 窗口
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址