Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了选项卡控件(lv_tabview),本节课带大家学习窗口控件,废话不多说! 一 有图有真相 
二 代码分析 用户可下载"圆弧对象(lv_arc)的使用"文章末尾的Demo工程(点击我直接下载),参考圆弧对象(lv_arc)的使用文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加win_test()函数测试。 04 | lv_obj_t * win = lv_win_create(lv_scr_act(), NULL); |
05 | lv_win_set_title(win, "Window title" ); |
08 | lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE); |
09 | lv_obj_set_event_cb(close_btn, lv_win_close_event_cb); |
10 | lv_win_add_btn(win, LV_SYMBOL_SETTINGS); |
13 | lv_obj_t * txt = lv_label_create(win, NULL); |
14 | lv_label_set_text(txt, "This is the content of the window\n\n" |
15 | "You can add control buttons to\n" |
16 | "the window header\n\n" |
17 | "The content area becomes automatically\n" |
18 | "scrollable is it's large enough.\n\n" |
19 | " You can scroll the content\n" |
20 | "See the scroll bar on the right!" ); |
大家该怎么去理解一个窗口呢?其实我想你浏览器打开的每一个页面都是一个窗口,窗口具有可以关闭的属性,所以窗口的标题栏中有一个可以关闭的按钮,当然这个按钮需要我们自己去添加。 我们创建了一个窗口对象,然后通过以下API设置窗口标题为 Window title: 1 | lv_win_set_title(win, "Window title" ); |
然后我们给窗口标题栏上增加了两个按钮,当然使用的还是自带的图标: 1 | lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE); |
2 | lv_obj_set_event_cb(close_btn, lv_win_close_event_cb); |
3 | lv_win_add_btn(win, LV_SYMBOL_SETTINGS); |
需要注意的是,这里我们给close_btn设置了一个回调函数,但是大家可能会发现,上面并没有这个回调函数,没错,这个回调函数存在于源码中,内容如下: 1 | void lv_win_close_event_cb(lv_obj_t * btn, lv_event_t event) |
3 | if (event == LV_EVENT_RELEASED) { |
4 | lv_obj_t * win = lv_win_get_from_btn(btn); |
} 其实就是通过调用lv_obj_del这个API将我们的窗口对象删除了,所以大家点击关闭按钮的时候窗口就消失不见了,当然你也可以对设置按钮写一个回调函数,用来设置某些属性。 最后就是在串口对象内创建了一个标签,当然我们最后删除窗口对象时,这个窗口对象的子对象也是一起递归删除的。
OK,本节课就到这里,而且所有的自带控件我们都学完了,大家掌握了多少呢? |