我在辅助线程中从 Windows 中提取文件的缩略图,输出是 HBITMAP。现在我必须将其转换为 QImage 以将其发送回主线程。您可能已经知道,在非 gui 线程中使用 QPixmap 会导致运行时错误和编译时警告。我知道是因为我确实尝试过使用它,但它给了我随机错误。
任何想法,将不胜感激。
在辅助线程中提取缩略图时,为什么不直接存储 HBitmap 直到您再次回到主线程中?
因此,只需使用 HBitmaps 集合作为您的容器,而不是 QPixmaps...
(通读文档,看起来没有一种简单的方法可以在不使用 QPixmaps 的情况下完成任务)。
一个附加选项(如果上述路线在渲染时被证明太慢)是让您的主线程定期检查您的 HBitmap 列表并以生产者消费者模型的形式进行转换,您的辅助线程创建一个简短的列表HBitmaps 和计时器上的主线程会去转换它们。仅当您查看大量缩略图时才需要这样做...
您可以解决此问题的第三种方法是在 Qt 之外找到另一种方法来缓存这些位图或可以将其转换为 QImage 的中间转换。您甚至可以访问 Qt 的源代码并查看如何fromWinHBITMAP()
实现并创建您自己的。
希望有帮助。