以上代码在arduous报错 'lv_obj_t' {aka 'struct _lv_obj_t'} has no member named 'child_ll'
时间: 2024-01-21 20:03:07 浏览: 112
抱歉,我的回答中的代码是基于 LittlevGL v7 版本的,而 Arduous 使用的是 LittlevGL v6 版本,因此会出现上述错误。
在 LittlevGL v6 中,可以使用以下代码来清除当前页面的所有 label:
```c
lv_obj_t *label;
lv_obj_t *scr = lv_scr_act(); // 获取当前活动屏幕对象
// 遍历当前屏幕上的所有对象
LV_LL_READ(scr->child_ll, label) {
// 判断对象类型是否为 label
if(lv_obj_get_type(label) == LV_OBJX_TYPE_LABEL) {
// 删除 label 对象
lv_obj_del(label);
}
}
```
以上代码中,我们同样是先获取当前活动的屏幕对象 `scr`,然后通过遍历其 `child_ll` 链表来获取其中的所有子对象。不同的是,我们使用 `lv_obj_get_type` 函数来判断对象类型,如果是 label 类型则将其删除。
希望这次回答能够解决你的问题,如果还有其他疑问请随时提出。
相关问题
仍然报错 'lv_obj_t' {aka 'struct _lv_obj_t'} has no member named 'child_ll'
非常抱歉,我之前的回答还是有误,Arduous 中确实没有 `child_ll` 成员。
在 Arduous 中,可以使用以下代码来清除当前页面的所有 label:
```c
lv_obj_t *label;
lv_obj_t *scr = lv_scr_act(); // 获取当前活动屏幕对象
// 遍历当前屏幕上的所有对象
label = lv_obj_get_child(scr, NULL);
while(label != NULL) {
// 判断对象类型是否为 label
if(lv_obj_get_type(label) == LV_OBJX_TYPE_LABEL) {
// 删除 label 对象
lv_obj_del(label);
}
label = lv_obj_get_child(scr, label);
}
```
以上代码中,我们同样是先获取当前活动的屏幕对象 `scr`,然后使用 `lv_obj_get_child` 函数来获取当前页面的第一个子对象 `label`。然后在一个循环中,我们遍历当前页面上的所有子对象,对于每个子对象,我们都使用 `lv_obj_get_type` 函数来判断其类型是否为 label,如果是,则将其删除。
希望这次回答能够解决你的问题,如果还有其他疑问请随时提出。
arduino报错'lv_obj_get_type' was not declared in this scope
抱歉,我之前的回答中使用了 Arduous 中不存在的函数 `lv_obj_get_type`,导致了编译错误。
在 Arduous 中,可以使用 `lv_obj_check_type` 函数来判断对象类型,代码如下:
```c
lv_obj_t *label;
lv_obj_t *scr = lv_scr_act(); // 获取当前活动屏幕对象
// 遍历当前屏幕上的所有对象
label = lv_obj_get_child(scr, NULL);
while(label != NULL) {
// 判断对象类型是否为 label
if(lv_obj_check_type(label, &lv_label_class)) {
// 删除 label 对象
lv_obj_del(label);
}
label = lv_obj_get_child(scr, label);
}
```
以上代码中,我们同样是先获取当前活动的屏幕对象 `scr`,然后使用 `lv_obj_get_child` 函数来获取当前页面的第一个子对象 `label`。然后在一个循环中,我们遍历当前页面上的所有子对象,对于每个子对象,我们使用 `lv_obj_check_type` 函数来判断其类型是否为 label,如果是,则将其删除。
希望这次回答能够解决你的问题,如果还有其他疑问请随时提出。
阅读全文