LVGL学习笔记 显示和隐藏 对象的属性标志位 配置

在显示GUI的过程中需要对某些对象进行临时隐藏或临时显示,因此需要对该对象的FLAG进行配置就可以实现对象的显示和隐藏了.

调用如下接口可以实现:

 lv_obj_add_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//隐藏对象lv_obj_clear_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//取消隐藏

实现的函数如下:

/*-----------------* Attribute set*----------------*/void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f)
{LV_ASSERT_OBJ(obj, MY_CLASS);bool was_on_layout = lv_obj_is_layout_positioned(obj);if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_invalidate(obj);obj->flags |= f;if(f & LV_OBJ_FLAG_HIDDEN) {lv_obj_invalidate(obj);}if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 |  LV_OBJ_FLAG_LAYOUT_2))) {lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj));lv_obj_mark_layout_as_dirty(obj);}if(f & LV_OBJ_FLAG_SCROLLABLE) {lv_area_t hor_area, ver_area;lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area);lv_obj_invalidate_area(obj, &hor_area);lv_obj_invalidate_area(obj, &ver_area);}
}
void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t f)
{LV_ASSERT_OBJ(obj, MY_CLASS);bool was_on_layout = lv_obj_is_layout_positioned(obj);if(f & LV_OBJ_FLAG_SCROLLABLE) {lv_area_t hor_area, ver_area;lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area);lv_obj_invalidate_area(obj, &hor_area);lv_obj_invalidate_area(obj, &ver_area);}obj->flags &= (~f);if(f & LV_OBJ_FLAG_HIDDEN) {lv_obj_invalidate(obj);if(lv_obj_is_layout_positioned(obj)) {lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj));lv_obj_mark_layout_as_dirty(obj);}}if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 |  LV_OBJ_FLAG_LAYOUT_2))) {lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj));}}

其中还有很多其他配置如下:

/*** On/Off features controlling the object's behavior.* OR-ed values are possible*/
enum {LV_OBJ_FLAG_HIDDEN          = (1L << 0),  /**< Make the object hidden. (Like it wasn't there at all)*/LV_OBJ_FLAG_CLICKABLE       = (1L << 1),  /**< Make the object clickable by the input devices*/LV_OBJ_FLAG_CLICK_FOCUSABLE = (1L << 2),  /**< Add focused state to the object when clicked*/LV_OBJ_FLAG_CHECKABLE       = (1L << 3),  /**< Toggle checked state when the object is clicked*/LV_OBJ_FLAG_SCROLLABLE      = (1L << 4),  /**< Make the object scrollable*/LV_OBJ_FLAG_SCROLL_ELASTIC  = (1L << 5),  /**< Allow scrolling inside but with slower speed*/LV_OBJ_FLAG_SCROLL_MOMENTUM = (1L << 6),  /**< Make the object scroll further when "thrown"*/LV_OBJ_FLAG_SCROLL_ONE      = (1L << 7),  /**< Allow scrolling only one snappable children*/LV_OBJ_FLAG_SCROLL_CHAIN_HOR = (1L << 8), /**< Allow propagating the horizontal scroll to a parent*/LV_OBJ_FLAG_SCROLL_CHAIN_VER = (1L << 9), /**< Allow propagating the vertical scroll to a parent*/LV_OBJ_FLAG_SCROLL_CHAIN     = (LV_OBJ_FLAG_SCROLL_CHAIN_HOR | LV_OBJ_FLAG_SCROLL_CHAIN_VER),LV_OBJ_FLAG_SCROLL_ON_FOCUS = (1L << 10),  /**< Automatically scroll object to make it visible when focused*/LV_OBJ_FLAG_SCROLL_WITH_ARROW  = (1L << 11), /**< Allow scrolling the focused object with arrow keys*/LV_OBJ_FLAG_SNAPPABLE       = (1L << 12), /**< If scroll snap is enabled on the parent it can snap to this object*/LV_OBJ_FLAG_PRESS_LOCK      = (1L << 13), /**< Keep the object pressed even if the press slid from the object*/LV_OBJ_FLAG_EVENT_BUBBLE    = (1L << 14), /**< Propagate the events to the parent too*/LV_OBJ_FLAG_GESTURE_BUBBLE  = (1L << 15), /**< Propagate the gestures to the parent*/LV_OBJ_FLAG_ADV_HITTEST     = (1L << 16), /**< Allow performing more accurate hit (click) test. E.g. consider rounded corners.*/LV_OBJ_FLAG_IGNORE_LAYOUT   = (1L << 17), /**< Make the object position-able by the layouts*/LV_OBJ_FLAG_FLOATING        = (1L << 18), /**< Do not scroll the object when the parent scrolls and ignore layout*/LV_OBJ_FLAG_OVERFLOW_VISIBLE = (1L << 19), /**< Do not clip the children's content to the parent's boundary*/LV_OBJ_FLAG_LAYOUT_1        = (1L << 23), /**< Custom flag, free to use by layouts*/LV_OBJ_FLAG_LAYOUT_2        = (1L << 24), /**< Custom flag, free to use by layouts*/LV_OBJ_FLAG_WIDGET_1        = (1L << 25), /**< Custom flag, free to use by widget*/LV_OBJ_FLAG_WIDGET_2        = (1L << 26), /**< Custom flag, free to use by widget*/LV_OBJ_FLAG_USER_1          = (1L << 27), /**< Custom flag, free to use by user*/LV_OBJ_FLAG_USER_2          = (1L << 28), /**< Custom flag, free to use by user*/LV_OBJ_FLAG_USER_3          = (1L << 29), /**< Custom flag, free to use by user*/LV_OBJ_FLAG_USER_4          = (1L << 30), /**< Custom flag, free to use by user*/};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【读书笔记】《重构_改善既有代码的设计》24种代码的坏味道

24中代码的坏味道 标题&#xff1a;【读书笔记】《重构_改善既有代码的设计》24种代码的坏味道 时间&#xff1a;2024.01.11 作者&#xff1a;耿鬼不会笑 24种代码的坏味道 1.神秘命名&#xff08;Mysterious Name&#xff09; 描述&#xff1a;改名不仅仅是修改名字而已。如…

字体图标 iconFont

字体图标使用场景︰主要用于显示网页中通用、常用的一些小图标 精灵图是有诸多优点的&#xff0c;但是缺点很明显。 图片文件还是比较大的。图片本身放大和缩小会失真。一旦图片制作完毕想要更换非常复杂。 此时&#xff0c;有一种技术的出现很好的解决了以上问题&#xff0c…

springboot虹软人脸识别集成

准备工作 虹软开放平台中创建一个新的应用 虹软开发平台【点我跳转】 开始上代码 基本配置 将下载的jar包放到src同级目录下 <!-- 虹软--><dependency><groupId>com.arcsoft.face</groupId><artifactId>arcsoft-sdk-face</artifactI…

力扣日记1.10-【二叉树篇】701. 二叉搜索树中的插入操作

力扣日记&#xff1a;【二叉树篇】701. 二叉搜索树中的插入操作 日期&#xff1a;2024. 参考&#xff1a;代码随想录、力扣 —————————————————————— 天哪&#xff0c;上次打开力扣还是2023&#xff0c;转眼已经2024&#xff1f;&#xff01; 两个星期过去…

【提示学习论文六】MaPLe: Multi-modal Prompt Learning论文原理

文章目录 MaPLe: Multi-modal Prompt Learning 多模式提示学习文章介绍动机MaPLe:Multi-modal Prompt Learning 模型结构1、Deep Language Prompting 深度语言提示2、Deep Vision Prompting 深度视觉提示3、Vision Language Prompt Coupling 视觉语言提示耦合提示耦合过程 实验…

232Modbus转Profinet应用案例分享

现场需求&#xff1a;现场需要将多台伺服接到控制器&#xff08;1200PLC&#xff09;上&#xff0c;用Modbus协议。 根据现场的描述&#xff0c;我们给出一个方案&#xff0c;在PLC和伺服中间加入232Modbus转Profinet&#xff08;XD-PNR200&#xff09;网关&#xff0c;232Modb…

如何进行大数据系统测试

大数据系统常见的架构形式有如下几种&#xff1a; Hadoop架构&#xff1a; Hadoop Distributed File System (HDFS)&#xff1a;这是一种分布式文件系统&#xff0c;设计用于存储海量数据并允许跨多台机器进行高效访问。 MapReduce&#xff1a;作为Hadoop的核心计算框架&#…

基于css实现动画效果

介绍 本文将会基于css&#xff0c;实现各种动画效果&#xff0c;接下来会从简单几个例子入手。 案例 三颗球 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>React App</title><style>…

设计模式的7大基本原则

概括&#xff1a; 1、单一职责原则(Single Responsibility Principle&#xff0c;SRP) 2、开放封闭原则(Open/Closed Principle&#xff0c;OCP) 3、里氏替换原则(Liskov Substitution Principle&#xff0c;LSP) 4、依赖倒置原则(Dependency Inversion Principle&#xff0c;D…

js解构赋值和...的运用

解构赋值 含义 在 JavaScript 中&#xff0c;解构赋值是一种方便的语法&#xff0c;用于从数组或对象中提取数据并赋值给变量 示例 解构数组&#xff1a; const numbers [1, 2, 3, 4, 5]; const [a, b, ...rest] numbers; console.log(a); // 1 console.log(b); // 2 cons…

【scala】编译build报错 “xxx is not an enclosing class“

private[sources] val creationTimeMs: Long {val session SparkSession.getActiveSession.orElse(SparkSession.getDefaultSession)require(session.isDefined)private[xxx]是访问权限控制在xxxx包的意思。 解决办法&#xff1a; 把[sources]删掉&#xff0c;或者改成和包名…

vim升级和配置

vim升级和配置 1、背景2、环境说明3、操作3.1 升级VIM3.2 配置VIM3.2.1、编辑vimrc文件3.2.2、安装插件 1、背景 日常工作跟linux系统打交道比较多&#xff0c;目前主要用到的是Cenots7和Ubuntu18这两个版本的linux系统&#xff0c;其中Centos7主要是服务器端&#xff0c;Ubun…

VMware正被博通“收拾”,我们是不是可以“嚣张”一点?

引言&#xff1a;一朝躺在大佬怀&#xff0c;今生荣华伸手来。 【全球存储观察 &#xff5c; 科技热点关注】 如是所闻&#xff0c;2023年元旦前两个月&#xff0c;大家看到博通以610亿美元的高价&#xff0c;成功完成收购了闻名遐迩的虚拟化大佬VMware。日期为2023年11月22日。…

0111qt

实现闹钟&#xff0c;并播报懒虫...~ daytest.pro: QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (th…

CImage成员函数Load、Create、Draw、Save使用方法简介

在Visual C中若想处理图片&#xff0c;可以使用CBitmap 类或静态图片控件。但它们处理只能处理BMP格式的图片、图标、光标以及图元文件等&#xff1b;使用起来非常受限&#xff0c;因此我们一般只是在做程序界面时使用。而CImage可以处理JPGE、GIF、BMP、PNG等多种格式图片&…

1.11.。。。

1 有道云笔记 2 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QTextToSpeech>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QW…

江科大STM32

参考&#xff1a; https://blog.csdn.net/weixin_54742551/article/details/132409170?spm1001.2014.3001.5502 https://blog.csdn.net/Johnor/article/details/128539267?spm1001.2014.3001.5502 SPI&#xff1a;https://blog.csdn.net/weixin_62127790/article/details/132…

【SAP-PP】生产订单导入问题--完成日期向前推了一天

问题描述&#xff1a; 在执行BAPI_PRODORD_CREATE生产订单导入的时候&#xff0c;发现填写入模板中的基本完成日期是12月31日&#xff0c;但是到具体工单时变成了12月30日 截图说明&#xff1a; 感觉很神奇&#xff0c;咋一看&#xff0c;真的是日期提前了一天&#xff0c;de…

CMake入门教程【高级篇】qmake转cmake

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1. 概述2.qmake与cmake的差异3. qmake示例4.qmake转cmake示例5.MOC、UIC和RCC…

快速开发、打包、上架一个 uTools 插件

本文将从零开始&#xff0c;一步步完成整个开发、打包和上架流程。 打开 uTools&#xff0c;搜索 uTools 开发者工具&#xff1a; 新建项目&#xff1a; 填写插件信息&#xff1a; 直接下载一个 uTools 启动模板&#xff1a;https://gitee.com/penggeor/utools-plugin-start…