从 C++ 更改 QML 图像源

Posted

技术标签:

【中文标题】从 C++ 更改 QML 图像源【英文标题】:Change QML Image source from C++ 【发布时间】:2020-02-06 09:27:03 【问题描述】:

如果您查看下面的示例,我可以使用 QT 从我的 C++ 代码中更改 QML 对象的属性。

C++

QQuickItem* objectimage = quickView->rootObject();
QObject *im = objectimage->findChild<QObject*>("rect");
im->setProperty("color", "red");

QML

Image 
    objectName: "ima"
    id:pic
    source: "bgnight.png"

    Rectangle   
        objectName: "rect"
        id:redRect1
        width: 100
        height: 100
        x: 130
        y:230
        color:"transparent"

我的问题是如何以与 C 相同的方式更改图像的来源。 我想从 C++ 更改 QML 的背景图像。

Image 

    property string src: "bge.png"
    source: src

    objectName: "ima"
    id:pic

【问题讨论】:

首先,C++ 不是 C。然后,我会反转依赖并将图像源绑定到 C++ 对象的属性。 您确定来源是有效的网址吗? 我没有看到在您的代码示例中更改 image source 的尝试。您是否尝试以与更改颜色属性相同的方式更改源? 是的,图像与 QML 文件位于同一目录中,因此可以正常加载。只是想知道如何从 C++ 中更改它。是的,我知道 C 不是 C++,抱歉打错了。 是的,如果尝试更改源会产生运行时错误,更改 qml 图像源不像更改对象属性那么简单。 【参考方案1】:

Qt 只有 C++ api,但您可以创建具有 C 函数定义但具有 C++ 实现的单独包装库

【讨论】:

哦,谢谢,但我的代码是 c++,很抱歉造成误解。所以 api 不是问题,只是想知道如何从 C++ 更改 QML 图像源

以上是关于从 C++ 更改 QML 图像源的主要内容,如果未能解决你的问题,请参考以下文章

Qml 图像不会在源更改和信号接收时刷新

从 C++ 更改 QML Listview 委托

BlackBerry Cascades 中的 QML 字符串

QML:为图像设置“源”属性会导致它消失

QML 绑定整数属性 - c++ 中的更改未发送到 QML

Qml 图像和内存释放