立即注册 找回密码

微雪课堂

搜索

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

2019-12-8 20:36| 发布者: imliubo| 查看: 9785| 评论: 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()函数测试。
void win_test(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 automatically\n"
                           "scrollable is it's large enough.\n\n"
                           " You can scroll the content\n"
                           "See the scroll bar on the right!");
}
大家该怎么去理解一个窗口呢?其实我想你浏览器打开的每一个页面都是一个窗口,窗口具有可以关闭的属性,所以窗口的标题栏中有一个可以关闭的按钮,当然这个按钮需要我们自己去添加。
我们创建了一个窗口对象,然后通过以下API设置窗口标题为 Window title:
lv_win_set_title(win, "Window title");  
然后我们给窗口标题栏上增加了两个按钮,当然使用的还是自带的图标:
    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); 
需要注意的是,这里我们给close_btn设置了一个回调函数,但是大家可能会发现,上面并没有这个回调函数,没错,这个回调函数存在于源码中,内容如下:
void lv_win_close_event_cb(lv_obj_t * btn, lv_event_t event)
{
    if(event == LV_EVENT_RELEASED) {
        lv_obj_t * win = lv_win_get_from_btn(btn);

        lv_obj_del(win);
    }
}
}
其实就是通过调用lv_obj_del这个API将我们的窗口对象删除了,所以大家点击关闭按钮的时候窗口就消失不见了,当然你也可以对设置按钮写一个回调函数,用来设置某些属性。
最后就是在串口对象内创建了一个标签,当然我们最后删除窗口对象时,这个窗口对象的子对象也是一起递归删除的。

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

381

顶一下

刚表态过的朋友 (381 人)

相关阅读

最新评论

Arduino
基础入门
OpenCV
littleGL

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

GMT+8, 2024-12-22 12:57 , Processed in 0.024996 second(s), 18 queries .

返回顶部