在运行时通过URL操纵QT资源



我在QML应用程序中使用QT资源。我想在运行时更改某些项目使用的资源。

在以下示例中,Image对象使用资源。它是正确显示的。如果我单击它,则处理程序设置似乎是相同的值,但它不起作用:Image对象无法加载资源。

import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("qrc file not updating")
    Image
    {
        id: gfx
        source: "qrc:/../../../../Qt/5.9/Src/qtquickcontrols2/examples/quickcontrols2/chattutorial/shared/Ernest Hemingway@2x.png"
        width: 200
        height: 200
    }
    MouseArea
    {
        anchors.fill: gfx
        onPressed: gfx.source = "qrc:/../../../../Qt/5.9/Src/qtquickcontrols2/examples/quickcontrols2/chattutorial/shared/Ernest Hemingway@2x.png"
    }
}

qrc更改为file以使用文件而不是资源。

是否可以在运行时更改使用的资源(在另一个QML对象 - 在这里,Image-有效,但我需要使用相同的对象(。

您是否尝试过通知信号?

onPressed: {
    gfx.source = "qrc://my/new/image.png";
    gfx.sourceChanged();
}

https://forum.qt.io/topic/6935/how-to-to-reload-an-image-in-qml/18

QRC也暗示它是在您的.pro文件中包含的QT资源文件中找到的。因此,如果它与file://一起使用,则可能需要将第二个添加到QResource文件中。

希望会有所帮助。

最新更新