不使用QPixmap将HBITMAP转换为QImage

时间:2013-03-18 15:32:04

标签: windows image qt qimage hbitmap

我在辅助线程中从Windows中提取文件的缩略图,输出是HBITMAP。现在我将它转换为QImage以将其发送回主线程。您可能已经知道,在非gui线程中使用QPixmap会导致运行时错误和编译时警告。我知道,因为我确实试图使用它,它给了我随机错误。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

在辅助线程中提取缩略图时,为什么不直接存储HBitmaps,直到再次返回主线程?

所以只需使用一组HBitmaps作为容器而不是QPixmaps ......

(阅读文档,看起来没有使用QPixmaps完成任务的简单方法)。

一个添加的选项(如果上面的路由在渲染时证明太慢)是让你的主线程周期性地检查你的HBitmap列表,并以你的辅助线程创建的生产者消费者模型的形式进行转换HBitmaps的简短列表,以及计时器上的主线程,将转换它们。只有在查看大量缩略图时才应该这样做......

你可以解决这个问题的第三种方法是走出Qt,然后找到另一种缓存这些位图的方法或者你可以变成QImage的中间转换。您甚至可以访问Qt的来源,看看fromWinHBITMAP()是如何实现的,并创建自己的。

希望有所帮助。