我不不知道你在做什麼,但是黑色背景意味着圖像沒有加載。通常這是錯誤的路徑或類似的東西。或者可能是圖像損壞。您只能有意識地填充背景,默認情況下它是透明的。
例如這樣的代碼:
C++:
TestItem::TestItem(QQuickItem *parent)
:QQuickItem(parent)
{
setFlag(QQuickItem::ItemHasContents);
}
QSGNode *TestItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData)
{
QSGSimpleTextureNode *node = static_cast<QSGSimpleTextureNode *>(oldNode);
if (!node) {
node = new QSGSimpleTextureNode();
QImage img(":/sunflower.png");
QSGTexture *texture = window()->createTextureFromImage(img);
node->setTexture(texture);
}
node->setRect(boundingRect());
return node;
}
QML
import QtQuick 2.7
import QtQuick.Window 2.0
import qml.test 1.0
import QtGraphicalEffects 1.0
Window {
id: mainWindow
width: 600
height: 400
visible: true
LinearGradient {
anchors.fill: parent
start: Qt.point(0, 0)
end: Qt.point(0, 200)
gradient: Gradient {
GradientStop { position: 0.0; color: "lightblue" }
GradientStop { position: 1.0; color: "white" }
}
}
TestItem {
width: 200
height: 200
anchors.centerIn: parent
}
}
產生這樣的結果:
該圖像取自here,使用GIMP調整到200x200。 項目結構是這樣的:
我發現有一個QImage繪圖的問題,不知何故圖像的透明部分是黑色轉換。 – SourabhKus