Hi,大家好,欢迎来到STM32之littlevGL课堂,我们在上节课中学习了滑动条控件(lv_slider),本节课带大家学习微调框控件,那么什么是微调框呢?废话不多说,大家还是看图吧! 一 有图有真相 其实我感觉翻译成微调框也不太准确,在这里也向大家征集更合适的中文名称。 二 代码分析 static void spinbox_event_handler(lv_obj_t * obj, lv_event_t event) { if(event == LV_EVENT_VALUE_CHANGED) { printf("Value: %d\n", lv_spinbox_get_value(obj)); } else if(event == LV_EVENT_CLICKED) { /*For simple test: Click the spinbox to increment its value*/ lv_spinbox_increment(obj); } } void spinbox_test(void) { lv_obj_t * spinbox; spinbox = lv_spinbox_create(lv_scr_act(), NULL); lv_spinbox_set_digit_format(spinbox, 5, 3); lv_spinbox_set_step(spinbox, 10); lv_spinbox_set_range(spinbox, 0, 100); lv_obj_align(spinbox, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_event_cb(spinbox, spinbox_event_handler); } lv_spinbox_set_digit_format(spinbox, 5, 3); lv_spinbox_set_step(spinbox, 10); lv_spinbox_set_range(spinbox, 0, 100); 然后我们设置每次步进值为10,不过这里的10计算的时候是包括小数点去计算的,也就是我们如果加上小数点那么计算的话,实际上是每次增加0.1,这个主要取决于你的小数点在第几位,之所以这样做的原因主要是浮点数相对来说在处理起来还是比较麻烦的,然后我们设置区间为0到100,同样的这里我们也需要根据小数点的位置进行缩放处理,实际上这个最大值是1,大家明白了吗?就是我们设置的时候是不考虑小数点的,最终的效果你需要根据你设置的小数点的位置进行换算一下。 然后我们在回调函数里有个API需要讲一下: lv_spinbox_increment(obj); lv_spinbox_decrement(obj); |