以下に基づく単純なクラスがありますQQuickPaintedItem。
class PaintedItem : public QQuickPaintedItem
{
Q_OBJECT
public:
PaintedItem();
void paint(QPainter *painter) override;
};
// ...
PaintedItem::PaintedItem()
{
setRenderTarget(QQuickPaintedItem::FramebufferObject);
}
void PaintedItem::paint(QPainter *painter)
{
painter->drawRect(0, 0, 150, 150);
QPixmap* m_pixmap = new QPixmap(width(), height());
m_pixmap->fill(QColor("transparent"));
QPainter painter2(m_pixmap);
painter2.setPen(QColor("red"));
painter2.drawRect(0, 0, 150, 150);
painter->drawPixmap(0, 0, *m_pixmap);
}
このpaint()関数は 2 つのことを行うだけです: で長方形を直接描画し、同じ長方形を含むQPainterを描画します。QPixmapしかし、レンダー ターゲットをFramebufferObjectコンストラクターのように設定すると、それらの四角形が何らかの理由で一致しなくなります。この文字列にコメントを付ければ、すべて問題ありません。
と FramebufferObject
それなし FramebufferObject
どうしてそうなるのか、対処法を教えてください。

