将背景图像添加到 QQuickItem

Posted

技术标签:

【中文标题】将背景图像添加到 QQuickItem【英文标题】:Adding a background image to a QQuickItem 【发布时间】:2015-08-23 00:59:55 【问题描述】:

我创建了一个QPixmap,并用QPainter 在其上绘制了较小的QPixmaps。我想将图像用作QQuickItem 的背景。是否有捷径可寻?

【问题讨论】:

【参考方案1】:

如果您的自定义项目源自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的所有者,在对象销毁时别忘了删除它。

【讨论】:

谢谢!像魅力一样工作。 什么是window()?我从QSGNode 派生并创建并使用QQuickWindow 类型的新对象。对吗? 谢谢@folibis。你能扩展你的代码来解释如何删除纹理吗? @folibis 你能告诉我如何添加一个有一些透明部分的图像吗? QSGTexture *texture = window()-&gt;createTextureFromImage(m_pixmap.toImage()); 返回一个空指针。知道为什么吗?我在 Qt 5.10

以上是关于将背景图像添加到 QQuickItem的主要内容,如果未能解决你的问题,请参考以下文章

php 将后缩略图作为背景图像添加到任何div

跟进背景图像与img标签[重复]

将背景图像添加到绘图

将图像添加到闪亮的应用程序

Tkinter:将具有透明背景的图像添加到按钮

将背景图像添加到此代码而不是黑色?