QPixmap是否可以重入?

时间:2015-03-23 15:48:39

标签: c++ qt qt5 qt5.4 reentrancy

我有一个程序需要加载很多的QPixmaps。我使用QtConcurrent::mappedReduced在几个作业中分割了pixmaps的加载(实际上我加载了一堆QGraphicPixmapItem s)。加载函数只调用 QPixmap s / QGraphicItem的构造函数,它不会尝试执行任何绘图,也不会与世界其他地方进行通信(至少通过我的代码)直到加载完成。

我在初始化期间遇到一些随机崩溃(比如1%的时间),并且helgrind抱怨QApplicationQPixmapQPixmap的无保护访问事件循环,但众所周知,Qt互斥体通常与valgrind不能很好地混合,所以它可能是误报。

像往常一样,Qt文档很清楚{{1}}是否可以重入,这基本上是我的问题。

1 个答案:

答案 0 :(得分:2)

嗯,你崩溃了,你问是否可以?你已经知道了答案。这不行。

我在这里看到的唯一问题是它是否是Qt错误。不,不是。

如果要加载大量像素图,请将它们加载到QImages中,然后将它们转换为后备存储格式。如今,在图像上使用像素图可以获得很多东西。只要图像具有与窗口小部件的后备存储(转换为QImage)相同的格式,您就可以获得相同的性能。当Qt仍然使用原生绘画时,QPixmap区别是有意义的。在Windows和OS X上,像素图只是格式正确的QImage

相关问题