我在我的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 -有效,但我需要使用相同的对象)。
发布于 2017-06-27 02:47:12
你试过通知信号了吗?
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文件中。
希望这能有所帮助。
https://stackoverflow.com/questions/44764885
复制相似问题