我们也可以通过源码来查看,他具体是怎么处理父子控件的,如果我们学过数据结构,则很容易看的懂其源码,在lv_obj_create中lv_obj_class_create_obj函数中有段源码如下: 但有时候,我们可能将某个或者多个子控件删除了,或者进行了其他操作,导致索引值不在等于创建顺序了,而且恰好子控件都是局部变量,那我们应该如何获取我们想要的子
不过,创建相应的控件也很简单,比如创建按钮直接调用lv_btn_create即可,程序会执行函数lv_obj_class_create_obj和lv_obj_class_init_obj,其中就会对obj进行所需内存的申请和各种初始化。 控件创建完成之后并不会进行绘制,而是通过调用lv_task_handler来一次性绘制整个UI(其中就会考虑覆盖问题),这样一定程度上就可以减...
首先,我们定义了一个事件处理回调函数lv_sys_add_device_event_cb,它负责为系统设置菜单按钮添加事件处理功能。该函数使用lv_obj_add_event_cb函数将事件处理器lv_sys_add_device_event_handler与所有事件关联起来。接下来,我们实现了事件处理函数lv_sys_add_device_event_handler。在这个函数中,我们首先获取事件...
lv_obj_t*obj=lv_obj_class_create_obj(MY_CLASS,parent);lv_obj_class_init_obj(obj); lv_obj_class_create_obj:用 get_instance_size 获取要创建对象类型的大小在堆中分配空间保存对应的对象,并将此对象保存到其父节点的children指针中,parent->spec_attr->children[parent->spec_attr->child_cnt - 1]...
LV_PART_SCROLLBAR当要展示的文本大于部件的大小时,显示的滚动条部分。 LV_PART_SELECTED选中文本时,突出显示的部分。label只能使用 text_color 和 bg_color 样式属性。 创建标签:lv_obj_t * label = lv_label_create(parent); 1.1 设置显示文本 创建了标签部件之后我们就可以设置文本来显示。
void lv_demo(void) { lv_obj_t * obj = lv_obj_create(lv_scr_act()); lv_obj_set_style_bg_color(obj, lv_palette_main(LV_PALETTE_RED), 0); lv_obj_set_style_radius(obj, LV_RADIUS_CIRCLE, 0); lv_obj_align(obj, LV_ALIGN_LEFT_MID, 10, 0); ...
在使用lv_obj_create()创建object时,需要携带一个parent参数用来指定新建对象的父对象。如果parent为NULL,则LVGL会认为当前正在创建的是一个screen,会自动把这个object的长宽设置为显示器的长宽,并把当前对象加入到screen列表中。 创建完screen之后,需要使用lv_scr_load()函数将创建好的screen加载到默认显示器中。LVGL...
lv_obj_t类定义在文件lvgl\src\core\lv_obj.h文件中,定义如下: typedefstruct_lv_obj_t{ constlv_obj_class_t*class_p; struct_lv_obj_t*parent; _lv_obj_spec_attr_t*spec_attr; _lv_obj_style_t*styles; #if LV_USE_USER_DATA ...
lv_obj_t * label = lv_label_create(obj); lv_label_set_text_fmt(label, "Hello style test %d", lv_pct(100)); } 演示效果如下: 学习点: LV_SIZE_CONTENT在设置这个会议大小的时候,可以用 LVGL 自己选择安排其中内容的大小。 lv_style_set_pad_xxx()可以设置控件内部某方位的边界范围。
constlv_obj_class_tlv_win_class; 1. 结合屏幕配置lvgl驱动 本次实验使用一块SSD1306的单色0.96寸显示屏,分辨率是128*64.主要是方便验证lvgl的可行性,大致流程如下: 这块屏幕参考了连志安老师的OLED屏幕开发,将源码中的SSD1306文件夹复制到lvgl目录下: