立即注册 找回密码

微雪课堂

搜索

树莓派littlevGL系列教程:列表控件(lv_list)

2019-12-8 20:06| 发布者: imliubo| 查看: 9023| 评论: 1|原作者: IAMLIUBO

摘要: Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了线条控件,本节课我们学习列表控件,废话不多说!一 有图有真相这就是列表控件,大家有没有想到什么具体应用场景呢?其实,列表还有蛮多的应用场景 ...
Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了线条控件,本节课我们学习列表控件,废话不多说!
一 有图有真相

这就是列表控件,大家有没有想到什么具体应用场景呢?其实,列表还有蛮多的应用场景的,比如文件列表,歌曲列表等等,大家可以继续思考一下还有什么地方可以应用列表控件。
二 代码分析
用户可下载"圆弧对象(lv_arc)的使用"文章末尾的Demo工程(点击我直接下载),参考圆弧对象(lv_arc)的使用文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加list_test()函数测试。
static void list_event_handler(lv_obj_t * obj, lv_event_t event)
{
    if(event == LV_EVENT_CLICKED) {
        printf("Clicked: %s\n", lv_list_get_btn_text(obj));
    }
}

void list_test(void)
{
    /*Create a list*/
    lv_obj_t * list1 = lv_list_create(lv_scr_act(), NULL);
    lv_obj_set_size(list1, 160, 200);
    lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);

    /*Add buttons to the list*/

    lv_obj_t * list_btn;

    list_btn = lv_list_add_btn(list1, LV_SYMBOL_FILE, "New");
    lv_obj_set_event_cb(list_btn, list_event_handler);

    list_btn = lv_list_add_btn(list1, LV_SYMBOL_DIRECTORY, "Open");
    lv_obj_set_event_cb(list_btn, list_event_handler);

    list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Delete");
    lv_obj_set_event_cb(list_btn, list_event_handler);

    list_btn = lv_list_add_btn(list1, LV_SYMBOL_EDIT, "Edit");
    lv_obj_set_event_cb(list_btn, list_event_handler);

    list_btn = lv_list_add_btn(list1, NULL, "Save");
    lv_obj_set_event_cb(list_btn, list_event_handler);
}
同样的,列表控件是有可以点击选择的属性,所以我们这里也需要一个回调函数用来处理,大家可能发现代码是非常简单了,没错,就是很简单,大部分代码都是在添加选项。
我们先创建了一个列表对象,然后我们分别添加了五个列表元素:
lv_list_add_btn(list1, LV_SYMBOL_FILE, "New");
大家有没有觉得第二个参数很熟悉呢?没错,那就是我们前面学习图片控件的时候说的自带的小图标,大家忘记的可以去看看之前的教程,当然你如果只想显示后面的文字也可以,你可以参照上面最后一个选项,要将此参数设置为NULL即可。
lv_obj_set_event_cb(list_btn, list_event_handler);
这里需要注意的是,当我们每添加一个元素时都需要设置一下回调函数,这一点相对来说还是有点麻烦的,因为这里的每一个元素其实都是从按钮控件派生而来的,所以每个选项之间都是独立的,正因为如此才需要我们每添加一个元素就设置一次。

OK,本节课就到这里,下节课我们学习一个跟我之前学习的仪表控件类似的控件,不过这里叫线表(lv_lmeter)?没想好该怎么翻译,所以就直译了,那我们下节课见!

250

顶一下

刚表态过的朋友 (250 人)

相关阅读

发表评论

最新评论

引用 游客 2020-1-29 21:13
假如设计一个播放器,里面有几百歌曲是不是为每个歌曲设置一个回调事件呢?

查看全部评论(1)

Arduino
基础入门
OpenCV
littleGL

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

GMT+8, 2024-11-22 12:29 , Processed in 0.024427 second(s), 18 queries .

返回顶部