Управление ресурсами Qt по URL во время выполнения
Я использую ресурсы Qt в своем приложении QML. Я хочу изменить ресурс, используемый некоторыми элементами во время выполнения.
В следующем примере 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
- работает, но мне нужно использовать тот же объект).
1 ответ
Вы пробовали сигнал уведомления?
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 подразумевает, что он находится в файле ресурсов qt, включенном в ваш файл.pro. Так что, если он работает с file://
тогда вам может понадобиться добавить второй в ваш файл qresource.
Надеюсь, это поможет.