2015-08-23 233 views

回答

5

如果您的自定義項目從QQuickItem派生你可以,也許這種方式重新定義QQuickItem::updatePaintNode()

QSGNode *MyItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) 
{ 
    QSGSimpleTextureNode *node = static_cast<QSGSimpleTextureNode *>(oldNode); 
    if (!node) { 
     node = new QSGSimpleTextureNode(); 
     QSGTexture *texture = window()->createTextureFromImage(m_pixmap.toImage()); 
     node->setTexture(texture); 
    } 
    node->setRect(boundingRect()); 
    return node; 
} 

注意的是:你的產品的QSGTexture *texture主人,不要忘記刪除它,而對象的破壞。

+0

謝謝!像魅力一樣工作。 – user3358451

+0

什麼是window()?我從'QSGNode'派生出來,並且創建並使用了一個'QQuickWindow'類型的新對象。這是正確的嗎? –

+0

[QQuickItem :: window()](http://doc.qt.io/qt-5/qquickitem.html#window) – folibis