[英]Is QPixmap reentrant?
我有一个程序需要加载很多 QPixmaps。 我使用QtConcurrent::mappedReduced
将像素图的加载分为几个作业(实际上是加载了一堆QGraphicPixmapItem
)。 加载函数仅调用QPixmap
s / QGraphicItem
的构造函数,它不会尝试执行任何绘制,并且直到加载完成后才与世界其他地区通信(至少通过我的代码)。
我在初始化过程中发生了一些随机崩溃(例如1%的时间) ,并且helgrind抱怨从QPixmap
和主事件循环对QApplication
无保护访问,但是众所周知,Qt互斥锁通常不能与valgrind很好地混合使用,因此可能是假阳性。
像往常一样,Qt文档对于QPixmap
是否可重入还不清楚,这基本上就是我的问题。
好吧,您会当机,然后问是否可以? 您已经知道答案了。 不好
我在这里看到的唯一问题是它是否是Qt错误。 不,这不对。
如果要加载很多像素图,请将其加载到QImages
,然后将其转换为后备存储格式。 这些天,通过在图像上使用像素图并没有太多收获。 只要图像与窗口小部件的后备存储(播放到QImage
)具有相同的格式,您就会具有相同的性能。 当Qt仍使用本机绘画时, QPixmap
区别QPixmap
意义。 在Windows和OS X上,像素图只是格式正确的QImage
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.