2017-06-26 4 views
1

私のQMLアプリケーションでQtリソースを使用しています。実行時にいくつかの項目で使用されるリソースを変更したい。実行時にURLでQtリソースを操作する

次の例では、Imageオブジェクトはリソースを使用します。正しく表示されます。私がクリックすると、ハンドラは同じ値に見えるものを設定しますが、動作しません。Imageオブジェクトはリソースをロードできません。代わりに、リソースの作品のファイルを使用するようにfileからqrcを変更

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 [email protected]" 
     width: 200 
     height: 200 
    } 
    MouseArea 
    { 
     anchors.fill: gfx 
     onPressed: gfx.source = "qrc:/../../../../Qt/5.9/Src/qtquickcontrols2/examples/quickcontrols2/chattutorial/shared/Ernest [email protected]" 
    } 
} 


使用中のリソースを実行時に変更することは可能ですか(別のQMLオブジェクトのインスタンス化 - ここではImage - 動作しますが、同じオブジェクトを使用する必要があります)。

答えて

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://で動作する場合は、2番目のファイルをqresourceファイルに追加する必要があります。

希望に役立ちます。

+0

あなたの提案がわかりません。 sourceChangedは、たとえばqml onSourceChanged:プロパティを使用して、接続できるImageインスタンスによって送出されるシグナルではありませんか?それにもかかわらず私は試してみたところ、誤りがありました。 –

関連する問題