3

paintEvent()カスタムウィジェットの内部で合成を行っています。一部の領域が既にペイントされているときに合成が行われるため、これまでにペイントされた現在のコンテンツにアクセスする必要があります。

そのため、現在のバッキング ストアのイメージ コンテンツにアクセスする方法を探していますpaintEvent。を調べましたQBackingStoreが、バッキング ストアのビットマップに直接アクセスできるものはありません。それを提供するために使用できる、おそらくプライベートなAPIはありますか?

そうでない場合は、明示的なピックスマップにペイントし、そのピックスマップをウィジェットにレンダリングする必要があります。

4

1 に答える 1

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/

于 2013-09-10T17:33:22.293 に答える