我在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
- 有效,但我需要使用相同的对象)。
答案 0 :(得分:0)
您是否尝试过通知信号?
onPressed: {
gfx.source = "qrc://my/new/image.png";
gfx.sourceChanged();
}
https://forum.qt.io/topic/6935/how-to-reload-an-image-in-qml/18
qrc也暗示它存在于.pro文件中包含的qt资源文件中。因此,如果它适用于file://
,那么您可能需要将第二个添加到qresource文件中。
希望有所帮助。