用户名 立即注册 找回密码

微雪课堂

搜索

树莓派littlevGL系列教程:窗口控件(lv_win)

2019-12-8 20:36| 发布者: imliubo| 查看: 10534| 评论: 0|原作者: IAMLIUBO

摘要: Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了选项卡控件(lv_tabview),本节课带大家学习窗口控件,废话不多说!一 有图有真相二 代码分析 cpp代码:void win_test(void) { /*Create a window*/ ...
Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了选项卡控件(lv_tabview),本节课带大家学习窗口控件,废话不多说!
一 有图有真相

二 代码分析
用户可下载"圆弧对象(lv_arc)的使用"文章末尾的Demo工程(点击我直接下载),参考圆弧对象(lv_arc)的使用文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加win_test()函数测试。
01void win_test(void)
02{
03    /*Create a window*/
04    lv_obj_t * win = lv_win_create(lv_scr_act(), NULL);
05    lv_win_set_title(win, "Window title");                        /*Set the title*/
06 
07    /*Add control button to the header*/
08    lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE);           /*Add close button and use built-in close action*/
09    lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);
10    lv_win_add_btn(win, LV_SYMBOL_SETTINGS);        /*Add a setup button*/
11 
12    /*Add some dummy content*/
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!");
21}
大家该怎么去理解一个窗口呢?其实我想你浏览器打开的每一个页面都是一个窗口,窗口具有可以关闭的属性,所以窗口的标题栏中有一个可以关闭的按钮,当然这个按钮需要我们自己去添加。
我们创建了一个窗口对象,然后通过以下API设置窗口标题为 Window title:
1lv_win_set_title(win, "Window title");
然后我们给窗口标题栏上增加了两个按钮,当然使用的还是自带的图标:
1lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE);           /*Add close button and use built-in close action*/
2lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);
3lv_win_add_btn(win, LV_SYMBOL_SETTINGS);
需要注意的是,这里我们给close_btn设置了一个回调函数,但是大家可能会发现,上面并没有这个回调函数,没错,这个回调函数存在于源码中,内容如下:
1void lv_win_close_event_cb(lv_obj_t * btn, lv_event_t event)
2{
3    if(event == LV_EVENT_RELEASED) {
4        lv_obj_t * win = lv_win_get_from_btn(btn);
5 
6        lv_obj_del(win);
7    }
8}
}
其实就是通过调用lv_obj_del这个API将我们的窗口对象删除了,所以大家点击关闭按钮的时候窗口就消失不见了,当然你也可以对设置按钮写一个回调函数,用来设置某些属性。
最后就是在串口对象内创建了一个标签,当然我们最后删除窗口对象时,这个窗口对象的子对象也是一起递归删除的。

OK,本节课就到这里,而且所有的自带控件我们都学完了,大家掌握了多少呢?

381

顶一下

刚表态过的朋友 (381 人)

相关阅读

最新评论

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2025-4-1 00:00 , Processed in 0.086268 second(s), 39 queries .

返回顶部