立即注册 找回密码

微雪课堂

搜索
微雪课堂 图形用户界面(GUI) 查看内容

STM32之littlevGL系列教程:列表控件(lv_list)

2020-3-29 12:23| 发布者: imliubo| 查看: 2846| 评论: 0|原作者: IAMLIUBO

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

这就是列表控件,大家有没有想到什么具体应用场景呢?其实,列表还有蛮多的应用场景的,比如文件列表,歌曲列表等等,大家可以继续思考一下还有什么地方可以应用列表控件。
二 代码分析
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)?没想好该怎么翻译,所以就直译了,那我们下节课见!




98

顶一下

刚表态过的朋友 (98 人)

相关阅读

最新评论

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

GMT+8, 2024-4-26 03:32 , Processed in 0.021318 second(s), 17 queries .

返回顶部