自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 Qt 6.9.2 动画卡顿(掉帧)问题

经过测试,是由于threaded渲染模式下,Qt错误地认为当前不能够继续使用vsync同步而换用timer同步导致的。其中,threaded渲染模式是多线程渲染,相对于basic的单线程渲染而言。vsync同步是一种多线程渲染的同步方式,当Qt认为渲染将要错过下一帧时,就会自动切换为timer模式。最近把一个Qt6.5的项目升级到了Qt 6.9.2版本(为了使用更新版本的编译器)。结果发现,升级后,qml的所有动画(Animation)效果全部出现了卡顿、掉帧的情况。

2025-09-05 23:52:19 223

原创 减少Qml界面内存占用的几个方法

Qml语言十分轻巧简便,但在编写每一个对象时,我们都应该在心中考虑一下,是否可以让这个对象更少地占用内存资源。

2025-08-12 15:11:48 803

原创 c++从字符串中获取模板参数

第二个参数就是指,如果没有指定"A"的值,返回默认的数字 0。python传参时,可以指定: [name1] = xxx,[name2] = xxx,而且具有默认值的参数也不需要放在参数列表的末尾。函数内部,通过 Tag::getIntArg( "A" ) Tag::getBoolArg( "B" ) 来获取传递的参数。( 当然,这里用的至少是 C++17,要是用低版本写......😇😇😇)是一个用来返回两者较小值的模板函数,防止字符串访问越界 (因为编译器会处理整个宏的每一行代码)。

2025-08-09 18:07:21 387

原创 Qt qml Shape存在内存泄漏

虽然我一百个不相信Qt库竟然会出这种问题,但当内存泄漏达到2000MB时,而换用Canvas则只有三百多MB时,我只能这么认为了。由于代码里面有大量的动态创建/销毁Qml对象的过程,所以一开始怀疑是忘记动态destroy()。在软件模式下,Shape默认把各种对象绘制到纹理上,再把纹理上传到opengl进行绘制。而且,Shape本身内存占用也很大,因为它相当于是存储了一张图片,再加上内存泄漏。今天测试一个基于Qt qml的程序的时候,发现其内存一直在增长,于是怀疑有内存泄漏。

2025-03-02 21:46:26 342 1

原创 Qml list<var>和原生javascript列表的区别

由此可见,对于元素为对象的情况,list<var>通过[ ]访问返回的是一个值类型,而不是元素的引用。也失去了作用,因为qml_list[0]返回了一个拷贝,所以修改后,qml_list[0][0]仍然是 1。对于前两种情况,qml_list[0]都是被访问的,自动调用的是Property的getter,获得值类型。而qml_list[0] = [100,2,3]则调用的是setter,即赋值器,因而修改成功。QML中 list 是内建的qml值类型,所以它也满足上面这一点,即通过值进行传递。

2025-02-20 19:39:41 472

原创 c++模板元Lambda

至此,我们就实现了constEval了。我称它为模板元Lambda。这个东西,就是对编译器开销太大了。不过,只要全局变量GlobalArgNum小于30,一般情况下编译器应该能撑住。如果只是在constEval里面循环的话,表现还是很不错的。像文章开头的MatMul矩阵乘法,对于两个9*9的矩阵乘法的编译大概只需要4秒钟就可以了。这里面constEval循环的次数是9 * 9 * 9 = 729次。综上可见,还是用模板存储变量的问题。Args无论是增删改查对编译器的开销都太大了。

2024-12-10 20:27:28 1863

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除