0

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

任何想法,将不胜感激。

4

1 回答 1

0

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

因此,只需使用 HBitmaps 集合作为您的容器,而不是 QPixmaps...

(通读文档,看起来没有一种简单的方法可以在不使用 QPixmaps 的情况下完成任务)。

一个附加选项(如果上述路线在渲染时被证明太慢)是让您的主线程定期检查您的 HBitmap 列表并以生产者消费者模型的形式进行转换,您的辅助线程创建一个简短的列表HBitmaps 和计时器上的主线程会去转换它们。仅当您查看大量缩略图时才需要这样做...

您可以解决此问题的第三种方法是在 Qt 之外找到另一种方法来缓存这些位图或可以将其转换为 QImage 的中间转换。您甚至可以访问 Qt 的源代码并查看如何fromWinHBITMAP()实现并创建您自己的。

希望有帮助。

于 2013-03-18T17:40:28.557 回答