Qt 是否有办法访问QWidget';什么是后备店?

Qt 是否有办法访问QWidget';什么是后备店?,qt,qt5,qwidget,Qt,Qt5,Qwidget,我正在自定义小部件中的paintEvent()中进行一些合成。一些合成是在某些区域已经绘制时完成的,我需要访问到目前为止绘制的当前内容 因此,我正在寻找一种在paintEvent期间访问当前备份存储的图像内容的方法。我已经看过了,但是没有任何东西可以直接让我访问备份存储位图。是否有一些API(可能是私有的)可以用来提供这些功能 如果没有,我将不得不求助于在显式的pixmap上绘制,并将该pixmap渲染到小部件上。这是可能的,但它不可移植。在大多数平台上,QBackingStore只是一个围绕Q

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

因此,我正在寻找一种在
paintEvent
期间访问当前备份存储的图像内容的方法。我已经看过了,但是没有任何东西可以直接让我访问备份存储位图。是否有一些API(可能是私有的)可以用来提供这些功能


如果没有,我将不得不求助于在显式的pixmap上绘制,并将该pixmap渲染到小部件上。

这是可能的,但它不可移植。在大多数平台上,
QBackingStore
只是一个围绕
QImage
缓冲区的包装类,但我想这并不能保证。我在编写
QuickWidget
时研究过这个问题。需要演员阵容:

QImage*image=dynamic_cast(backingStore()->paintDevice());
如果(image!=0)//这是一个映像,请对它进行处理
小心不要使
QImage
分离。诸如调整大小之类的事情是禁止的

在以下位置查看
QuickWidget


您的编辑需要rtti支持,但是:)Qt不能保证。另外,如果您知道
静态\u cast
可以工作,那么
动态\u cast
将浪费时间,甚至可能不受支持(使用
-fno-rtti
)。您不知道静态\u cast可以工作,这就是重点(用你自己的话来说,这是不保证的)。我认为现在不使用rtti是不合理的。这不是“保证”使用Qt,但如果您使用它,则由您来启用它。我认为这没什么大不了的。@KubaOber我总是使用
-fno-rtti
编译
Qt
代码。这是
Qt
的吸引力之一。不需要异常,也不需要rtti。注意:这只应该在
paintEvent
内部工作。