单片机基础知识--LVGL学习-lv_obj_add_flag()

lv_obj_add_flag()

函数原型

c 复制代码
void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t flag);

头文件lvgl.h

  • obj:目标对象指针
  • flag:要设置的对象标志位,可以多个标志位按位或 | 同时传入

所属:LVGL 对象系统,用来给控件添加状态/行为标记,不修改样式,修改对象行为属性。


相关配套函数

c 复制代码
// 添加标志
void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t flag);

// 清除标志
void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t flag);

// 判断是否拥有该标志
bool lv_obj_has_flag(const lv_obj_t * obj, lv_obj_flag_t flag);

// 切换标志(有就清除,没有就添加)
void lv_obj_toggle_flag(lv_obj_t * obj, lv_obj_flag_t flag);

常用 lv_obj_flag_t 标志(LVGL 9.x)

标志 作用
LV_OBJ_FLAG_HIDDEN 对象隐藏,不再渲染,也不接收输入
LV_OBJ_FLAG_CLICKABLE 对象可点击接收输入事件
LV_OBJ_FLAG_CLICK_FOCUSABLE 点击时获取焦点
LV_OBJ_FLAG_SCROLLABLE 允许对象滚动(容器常用)
LV_OBJ_FLAG_SCROLL_ELASTIC 滚动到边界有弹性回弹效果
LV_OBJ_FLAG_SCROLL_MOMENTUM 滑动松手后惯性滚动
LV_OBJ_FLAG_SCROLL_CHAIN 把滚动传递给父对象
LV_OBJ_FLAG_FLOATING 对象不受父对象裁剪限制,可以绘制到父外面
LV_OBJ_FLAG_OVERFLOW_VISIBLE 子对象超出父边界也绘制出来
LV_OBJ_FLAG_EVENT_BUBBLE 事件向上冒泡到父对象

⚠️区分:

  • lv_obj_flag_t对象行为标志lv_obj_add_flag()
  • lv_state_t对象状态 (按下、聚焦、禁用),lv_obj_add_state()

使用示例

1. 隐藏对象

c 复制代码
lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN);   //隐藏
lv_obj_clear_flag(obj, LV_OBJ_FLAG_HIDDEN); //显示

2. 开启容器滚动,弹性+惯性

c 复制代码
lv_obj_add_flag(cont, LV_OBJ_FLAG_SCROLLABLE | 
                       LV_OBJ_FLAG_SCROLL_MOMENTUM | 
                       LV_OBJ_FLAG_SCROLL_ELASTIC);

3. 判断标志

c 复制代码
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN))
{
    //对象处于隐藏
}

关键注意点

  1. 多标志用按位或 |,不是逗号分隔。
  2. LV_OBJ_FLAG_HIDDEN:隐藏后对象完全不参与渲染和输入,不等于设置样式透明度 lv_style_set_opa()
    • HIDDEN:完全消失,不占用渲染
    • opa=0:看不见,但还占位置,还能接收点击事件
  3. LV_OBJ_FLAG_FLOATING / OVERFLOW_VISIBLE:父对象默认会裁剪子控件,想要子控件画到父控件外面,需要开启这两个标志。
  4. flag是对象实例属性,不会继承给子对象,每个对象独立。

容易踩坑

  • 容器滚动不生效:忘记设置 LV_OBJ_FLAG_SCROLLABLE;或者父对象裁剪,子大小没有超过容器大小。
  • 设置透明度看不见控件,但还能点击:只是样式opa为0,没有设置LV_OBJ_FLAG_HIDDEN
相关推荐
hh9501 小时前
Agent Plan x DeepSeek Harness — Token 预算管理与成本追踪体系技术
人工智能·学习·adg·火山引擎·adg成都社区
丰锋ff1 小时前
基于 Qt 的智能门禁系统
qt·学习
小小帅呀1 小时前
学习 VLA 第 2 天:深度学习基础
人工智能·深度学习·学习
具身AGI1 小时前
人类第一视角数据走上评测台:物理AI 人类学习路线
学习
dadaobusi2 小时前
5G核心网概念复习
学习
程序员与背包客_CoderZ2 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
william_yangshun2 小时前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
慧福堂3 小时前
偏印详解:十神中的智慧与孤影,如何善用偏印成就人生
大数据·学习·学习方法·八字·风水
2601_949950633 小时前
成绩提升不靠盲目刷题:用练题簿找准真正的薄弱知识点
学习·小程序·刷题·小程序推荐
步十人3 小时前
DeepRead-项目介绍
学习