立即注册 找回密码

微雪课堂

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

STM32之littlevGL系列教程:复选框控件(lv_cb)

2020-3-29 10:44| 发布者: imliubo| 查看: 2161| 评论: 0|原作者: IAMLIUBO

摘要: Hi,大家好,欢迎来到STM32之littlevGL课堂,我们在上节课中学习了画布控件(lv_canvas),本节课带大家来学习一下复选框控件,相信大家在日常操作电子产品的时候肯定都会用到复选框,只不过大家没怎么注意而已,那么 ...
Hi,大家好,欢迎来到STM32之littlevGL课堂,我们在上节课中学习了日历控件(lv_calendar),本节课带大家来学习一下复选框控件,相信大家在日常操作电子产品的时候肯定都会用到复选框,只不过大家没怎么注意而已,那么这里就教大家如何用复选框控件。
一 有图有真相

虽然这是一个很小的控件,但是一个完整的用户界面正是由很多小的,单独的控件组成的,如果一个界面是一整个控件,那肯定是不可能的,所以我们要先将最基本的控件学习并掌握完成后,后面我们做东西才能不会出现不知道用啥控件的问题,所以现在你每学习的一个控件,到最后都会都是有作用的!
二 代码分析
static void cb_event_handler(lv_obj_t * obj, lv_event_t event)
{
    if(event == LV_EVENT_VALUE_CHANGED) {
        printf("State: %s\n", lv_cb_is_checked(obj) ? "Checked" : "Unchecked");
    }
}

void cb_test(void)
{
    lv_obj_t * cb = lv_cb_create(lv_scr_act(), NULL);
    lv_cb_set_text(cb, "I agree to terms and conditions.");
    lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0);
    lv_obj_set_event_cb(cb, cb_event_handler);
}
可以看到这里的代码还是比较简单的,lv_cb_set_text函数是设置跟在复选框后面的文字的,然后我们通过lv_obj_set_event_cb函数设置一个回调函数,用来响应复选框选中后的事件触发,最后我们在回调函数中打印出了复选框的状态,我们再来看一下上面代码中没有提到的几个API:
void lv_cb_set_static_text(lv_obj_t *cb, const char *txt);
void lv_cb_set_style(lv_obj_t *cb, lv_cb_style_t type, const lv_style_t *style);
static void lv_cb_set_checked(lv_obj_t *cb, bool checked);
static void lv_cb_set_inactive(lv_obj_t *cb);
const char *lv_cb_get_text(constlv_obj_t *cb;
static bool lv_cb_is_checked(constlv_obj_t *cb);
static bool lv_cb_is_inactive(constlv_obj_t *cb);
const lv_style_t *lv_cb_get_style(constlv_obj_t *cb, lv_cb_style_t type);
复选框控件基本就上面这些API了,其实大家看名称应该也都能够知道是什么作用,那么这里给大家也做一下简单介绍:
lv_cb_set_static_text
也是设置文本,不过这里的文本要确保在复选框的声明周期内都要确保没有被释放掉,否则会出现意想不到的效果。
lv_cb_set_style
设置复选框的样式,其中type参数指的是复选框的哪一个样式要被设置,也就是是背景样式,是选中的样式,还是未被选中的样式,具体参数可以看下面的枚举结构体:
/** Checkbox styles. */
enum {
    LV_CB_STYLE_BG, /**< Style of object background. */
    LV_CB_STYLE_BOX_REL, /**< Style of box (released). */
    LV_CB_STYLE_BOX_PR, /**< Style of box (pressed). */
    LV_CB_STYLE_BOX_TGL_REL, /**< Style of box (released but checked). */
    LV_CB_STYLE_BOX_TGL_PR, /**< Style of box (pressed and checked). */
    LV_CB_STYLE_BOX_INA, /**< Style of disabled box */
};
typedef uint8_t lv_cb_style_t;
lv_cb_set_checked
设置复选框的状态,当参数checked为true是,复选框是选中状态,为false是未选中状态。
lv_cb_set_inactive
禁用复选框,让复选框不再可以被选中,没发现有可以再次激活的API。
lv_cb_get_text
获取我们设置的文本
lv_cb_is_checked
查询复选的状态,返回未true是已被选中,false是未选中。
lv_cb_is_inactive
查询是否被禁用,返回未true是已被禁用,false是未禁用。
lv_cb_get_style
查询样式,同样的type参数与上面设置样式的时候参数是一样的。

OK,本节课程就到这里,大家有没有觉得很简单呢?我们下一节课来学习图表控件(lv_chart),那我们下节课再见!



77

顶一下

刚表态过的朋友 (77 人)

相关阅读

最新评论

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

GMT+8, 2024-3-29 05:19 , Processed in 0.017910 second(s), 17 queries .

返回顶部