我在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文件中。
希望会有所帮助。