用户工具

站点工具


icore4tlvgl_30
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2021-01-01 yang 初次建立

实验三十:lv_win窗体

一、窗体

窗体控件是由标题、按钮和内容区域构建的类似容器的对象。它的主体部分为 LV_WIN_PART_BG ,其中包含两个实际部分:

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

页面可滚动部分有一个滚动条,关于滚动条的详细可以参考页面控件章节。 所有部分均支持典型的背景属性,其中标题文本使用标题栏部分的 Text 属性,而按钮的高度由 header height - header padding_top - header padding_bottom 得到。

二、标题栏

2.1、添加标题

使用函数 lv_win_set_title(win, “New title”) 可以在窗体的标题栏中添加标题。

2.2、添加控制按钮

使用命令 lv_win_add_btn_right(win, LV_SYMBOL_CLOSE) 可以将控制按钮添加到窗体标题栏的右侧,若要在窗口标题的左侧添加按钮可以使用 lv_win_add_btn_left(win, LV_SYMBOL_CLOSE) 。函数的第二个传入参数是图像源,它可以是字符图标、指向 lv_img_dsc_t 变量的指针或文件的路径。 窗体控制按钮的宽度可以使用 lv_win_set_btn_width(win, w) 来设置。如果参数 w0则按钮为方形。LVGL自带的按钮回调函数 lv_win_close_event_cb 可以用来关闭窗口。

lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE); /* 增加关闭按钮,传入关闭图标 */
lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);       /* 设置关闭按钮回调函数 */
lv_win_add_btn(win, LV_SYMBOL_SETTINGS);                     /* 添加设置按钮,传入设置图标 */

三、页面滚动

3.1、滚动条

滚动条的模式可以通过 lv_win_set_scrlbar_mode(win, LV_SCRLBAR_MODE_…) 设置,例如永远不显示滚动条、始终显示滚动条、在页面被拖动时显示滚动条等等。有关详细信息请参考页面控件章节。

3.2、导航和聚焦

用户除了用触摸屏来滑动窗体页面,还可以使用 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) 来设置。

四、布局与事件

4.1、布局

使用 lv_win_set_layout(win, LV_LAYOUT_…) 可以设置窗体页面内容的布局,详情请参考容器控件章节。

4.2、事件

窗体控件本身而言,仅支持通用事件。 以下键值由窗体页面处理: • LV_KEY_RIGHT / LEFT / UP / DOWN 滚动页面

void lv_gui_run(void){
	lvgl2rtt_init("lcd");                                        /* 初始化lvgl2rtt */
 
	lv_obj_t * win = lv_win_create(lv_scr_act(), NULL);          /* 创建窗口对象 */
	lv_obj_set_size(win, 300, 200);                              /* 设置窗口大小 */
	lv_obj_align(win, NULL, LV_ALIGN_CENTER, 0, 0);              /* 设置窗口位置 */
	lv_win_set_title(win, "Window title");                       /* 设置标题 */
 
	lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE);/* 增加关闭按钮,传入关闭图标 */
	lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);     /* 设置关闭按钮回调函数 */
	lv_win_add_btn(win, LV_SYMBOL_SETTINGS);                   /* 添加设置按钮,传入设置图标 */
 
	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!");
}
icore4tlvgl_30.txt · 最后更改: 2022/04/01 11:16 由 sean