- 博客(239)
- 收藏
- 关注
原创 用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
【代码】用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置。
2025-08-18 14:39:41
166
原创 文档开发(C语言+doxygen+.rst+Sphinx)
C代码实现功能+写注释Doxygen把代码+注释变成机器可读的 XML.rst写文档框架,告诉 Sphinx 从 XML 里拿文档把它们合起来,生成漂亮的文档网页。
2025-08-13 10:30:37
257
原创 在双buffer的情况下lv_draw_line是画在哪一块buffer的?
在双buffer的情况下lv_draw_line是画在non_act_buffer的。
2025-08-07 11:04:46
317
原创 LVGL当你直接操作显存时需要临时创建一个obj来模拟脏区,要用lv_img_create而不是lv_obj_create
lv_img是专门用于显示像素数据的控件,内部有处理图片数据的逻辑它会关联一个图像源(比如一个像素缓冲区),负责把这段像素数据渲染到屏幕上。所以当你直接操作显存(或者说显存映射的缓冲区)时,创建一个lv_img对象,能让 LVGL 知道这个区域是“图片”并且需要刷新。而lv_obj是 LVGL 的基础对象,只是一个容器和布局元素,没有任何“显示像素数据”的能力创建的对象本身没有内容,它不能直接绑定像素数据,也不会去处理像素缓冲区刷新。这意味着你直接操作显存,lv_obj。
2025-08-07 10:54:14
176
原创 关于使用lv_draw系列函数(如lv_draw_line,lv_draw_img)遇到的一些问题的思考
1、双buffer同步问题:因为画出来的东西不是对象,lvgl不会真的帮你从一块buffer同步到另一块buffer上。lv_draw系列函数是直接对显存进行操作的,它本身不是对象。在一些场景下会出现一些难以解释的问题。1、通过某种方法将buf1和buf2都画上线(dma_buf_copy)2、将线加上对象obj(做不到,因为线的内容你要不知道如何给到obj)
2025-08-05 15:29:15
127
原创 draw_ctx中clip_area和buf_area的区别,为什么看起来差不多?
clip_area控制“你画的东西是否可见buf_area告诉 LVGL:“你这次要画的目标区域是哪块 framebuffer。
2025-08-01 15:04:19
176
原创 lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_TRANSP, LV_PART_MAIN);为何设置了任是白色背景?
为何设置了任是白色背景?原因:LVGL初始化时已经把白色背景写入显存,你设置背景是透明那下一次刷就会刷透明背景,但是原本在显存的白色任然存在。
2025-07-30 16:28:10
105
原创 LVGL经验——obj离开父对象后禁止lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);
【代码】LVGL经验——obj离开父对象后禁止lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);
2025-07-29 16:08:37
76
原创 LVGL遇到的重大问题(初始化问题)
最近遇到一个问题,LVGL的init函数在调用我的函数的时候后续还有操作但是已经进入我的函数里面的,导致我很多东西用不了,例如_lv_refr_get_disp_refreshing()->里的东西有些就是空的,所以在我的函数里应该加个长延时等LVGL初始化完成后才继续执行
2025-07-23 17:40:36
84
原创 LVGL移植(内存管理)
答:自研是写三个函数,LVGL自带的内存管理流程是流程不是用户定的,但是分配函数还是可以用户定义。LVGL自带的内存管理流程的分配your_alloc_library写你要包含的头文件。your_alloc写你的内存分配函数,返回值是一个地址。LV_MEM_CUSTOM_REALLOC函数。
2025-07-05 22:09:47
286
原创 LVGL移植(外部SRAM)
移植STM32功能需包含触摸屏、FreeRTOS系统、外部SRAM及自研内存管理算法。移植步骤包括:1) 配置硬件接口;2) 移植FreeRTOS内核;3) 集成触摸驱动;4) 实现外部SRAM访问;5) 部署内存管理模块。重点在于外部SRAM的使用优化,需结合自研算法提升内存分配效率,同时复用前期课程已验证的底层驱动代码。移植过程需注意硬件初始化时序和内存边界检测。
2025-07-05 17:43:33
192
原创 LVGL移植(配置输入输出设备&测试)
可以自己在上面的define栏进行#defineHOR是水平,VER是竖直选择一个后将其他两个注释掉即可官方的打点方法,不需要可删注释掉和触摸屏无关部分因为tp_dev.scan检测到有触摸就会更新tp_dev.x和y三、提供时基(心跳)(此为无操作系统的提供时基过程)1、添加定时器驱动2、在定时器驱动.c文件中包含:#include lvgl.h3、在定时器中断函数(回调)中调用:lv_tick_inc(x);放中断服务函数要自己清标志位,所以直接放回调函数就好。
2025-07-05 17:00:22
904
原创 LVGL移植(建立工程)
与LVGL中与内存相关的接口文件接起来(配置LVGL的内存接口文件),如内存的初始化,内存管理算法(可选自研算法)等函数配置进去。与LVGL中显示的接口文件接起来(配置LVGL的显示接口文件),把如LCD的一些初始化函数或者打点函数等配置进去。与LVGL中输入的接口文件接起来(配置LVGL的输入接口文件),如触摸屏的初始化,扫描的坐标获取等函数配置进去。lvgl文件放LVGL的库文件(examples、src、lv_conf.h、lvgl.h文件)1、触摸屏使用的源码(驱动什么的)
2025-07-05 15:08:54
407
原创 LVGL移植要求&LVGL资料获取&LVGL库文件介绍
(就是一次可以刷多少个像素,越大越流畅)(水平像素800,垂直像素480的前提下,图形缓冲区的大小为800 * 480比较合适,实际上还得考虑色彩位数,如果是8位色彩就不变,16位色彩就要在此基础上*2,缓冲区大小应该是字节)———————————————————以上仅针对V8版本———————————————Flash/ROM(扮演角色:硬盘):>64KB,建议180KB以上。RAM(扮演角色:内存):>8KB,建议24KB以上。C99或更新的版本的编译器。主控频率:>16MHz。减小需要刷新的总像素。
2025-07-03 15:58:28
353
原创 LVGL简介
GUI库:图形用户界面库(Graphic user interface,GUI),只要调用GUI库的函数即可快速绘制出所需要的用户界面。2、可移植性高(与硬件无深度绑定,在不同平台都可以运行,只要做到硬件适配填好即可)1、支持多种输入设备(触摸屏、鼠标、键盘、编码器)3、具备高级图形特征(抗锯齿、过渡动画)甚至函数都不需要写,如直接拖拽式的。4、支持多种样式属性。
2025-07-03 14:44:02
165
原创 QT动画类
实现的,它提供了强大且灵活的工具来创建平滑的动画效果。是最常用的类,用于对对象的属性进行动画处理。这两个类可以组合多个动画,分别实现。
2025-06-02 19:52:52
374
原创 关于使用QT时写客户端连接时因使用代理出现的问题
开了VPN 或代理的话, 可能会自动试图通过系统代理连接,而这个代理类型不被它支持,就会出现错误:强制关闭 Qt 网络代理:这样就避免了 尝试用系统代理连接。如果你必须用代理连接,要确保代理类型是 Qt 支持的,比如 HTTP 或 SOCKS5 代理,且用正确的方式配置。或者,在使用梯子时,尝试关闭系统代理设置(或者配置梯子不影响本地局域网),避免影响本地 TCP 连接。你开梯子时,系统代理被启用, 默认读取了代理设置。你写的程序没设置代理,但 使用了“无效代理类型”,所以连接报错。解决就是告诉
2025-05-24 20:36:51
500
原创 VM共享文件夹挂载到某个文件夹的代码
你说“之前还有的,关机就没了”,这说明你遇到的问题很可能是:下面提供一个稳妥的做法,以 和 VMware 为例:VMware 设置中 Shared Folders 已启用,并设置为 Always Enabled设置的共享文件夹名称(比如叫 )步骤 3:测试手动挂载是否成功如果能看到你设置的共享文件夹,那说明可以正常挂载。写入以下内容:保存并退出后,执行:下次启动系统时会自动挂载到 。添加:并确保 是可执行的:🧪 最后检查重启一次虚拟机,验证:
2025-05-24 01:28:44
427
原创 QT中延时的用法及定时器的用法
方法是否阻塞是否处理其他命令备注是否不推荐在主线程用,界面卡死否是推荐,延迟执行不阻塞主线程QEventLoopQTimer延时函数是(局部)是控制力强,适合特定流程如果你描述你的使用场景,比如:“我希望点击按钮后等两秒再执行后续操作,但界面要能动”那就推荐你用。。定时器发出timeout信号并绑定槽函数的用法Qt 的信号可以绑定到你自定义的槽函数上,用于定时触发执行某些操作。
2025-05-23 15:40:22
725
原创 QString和QByteArray的区别和相互转换
推荐统一使用UTF-8作为字符串与字节的桥梁。QString更适合 UI 和国际化文本。QByteArray更适合文件、Socket 等二进制处理。若涉及非文本内容(如压缩包、加密数据),绝不要用QString存储,要用QByteArray。的作用是:🔄将一个十六进制字符串表示的字节数据,解码为真实的原始字节内容。表达式含义十六进制表示的字符串解析为原始字节(还原为内容)把字节内容转成十六进制。
2025-05-23 01:34:37
608
原创 QT ui控件setEnabled(false) 作用
防止用户点击、输入或与控件交互。其他的也是同理,程序员有完全控制权。,可以修改它的内容、样式等。
2025-05-22 20:35:07
357
原创 QT中信号和事件的区别
方面信号 (Signal)事件 (Event)触发方式主动发出(emit信号)被动接收(事件循环分发)通信机制信号槽机制,支持跨线程通信事件系统,事件循环传递用途对象间通知,响应某操作处理输入、定制控件行为处理方式连接槽函数处理重写事件处理函数耦合度松耦合较紧耦合,事件传递到具体对象信号用于对象间“高层”的通信,比如按钮点击通知业务逻辑。事件用于控件“底层”输入处理,定制响应鼠标、键盘等硬件事件。
2025-05-21 21:09:53
897
原创 QT中Main函数的那几条语句是什么意思
会启动事件处理系统,负责处理鼠标点击、键盘输入、窗口刷新、定时器等各种事件。是 Qt 中的一个标准窗口类,支持菜单栏、工具栏、状态栏、中心控件等。注意:如果你使用的是 Qt Quick(QML),这行会变成。GUI 程序所需的资源,比如字体、颜色、样式、系统资源等。是命令行参数,会被 Qt 用来处理一些命令行选项。对象,这是任何 Qt GUI 程序的基础。这是告诉 Qt:“开始绘制并显示这个窗口”。进入 Qt 的主事件循环(也叫消息循环)。如果你不调用这句,窗口是不会出现的。创建一个主窗口对象。
2025-05-21 00:44:21
336
原创 QT事件介绍及实现字体放大缩小(滚轮)
MyButton(Qwidget *parent):Qwidget(parent)这里是初始化列表,把传入的参数parent传给Qwidget构造。是用来发送clicked信号的,当然你也可以在事件press里写,这里只不过是把它弄成信号与槽的形式了。中处理了各种按键逻辑(如输入字符、光标移动等)。事件过滤器返回true就说明我们已经处理完了,系统不用处理了,如果是false就让系统处理,其实和上面的很一样。setfixedsize(pic.siez())是为了把按键的矩形区域变成和pic一样大。
2025-05-09 19:17:06
545
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人