有没有办法访问QWidget的后备存储上的图像?

时间:2013-09-10 16:34:16

标签: qt qt5 qwidget

我正在自定义小部件中的paintEvent()内进行一些合成。有些区域已经绘制完成,我需要访问当前绘制的当前内容。

所以,我正在寻找一种在paintEvent期间访问当前后备存储的图像内容的方法。我看过QBackingStore,但没有任何东西可以直接让我访问后备存储位图。是否有一些API,可能是私有的,可以用来提供它?

如果没有,我将不得不求助于在一个显式像素图上绘画并将该像素图渲染到小部件上。

1 个答案:

答案 0 :(得分:1)

有可能,但不便携。在大多数平台上,QBackingStore只是QImage缓冲区周围的包装类,但我认为这不能保证。我在编写QuickWidget时已经研究过这个问题。需要演员阵容:

QImage * image = dynamic_cast<QImage*>(backingStore()->paintDevice());
if (image != 0) // it's an image, do something with it

小心但不要导致QImage分离。调整大小等事情是不受限制的。

检查QuickWidget处:

https://code.google.com/p/quickwidget/