web-dev-qa-db-ja.com

QML画像に画像ソースをロードできません

これは本当に基本的なように思えますが、何らかの理由で、以下の超シンプルなQMLアプリで画像ソースを動作させることができません。

参考までに、Qt 5.3.2に基づいてMac OS-X 10.9.5、Qt Creator 3.2.1を実行しています。

import QtQuick 2.3
import QtQuick.Controls 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Test")

    Image {
        id: image1
        x: 10
        y: 10
        width: 100
        height: 100
        source: "testImage.png"
    }
} 

次のエラーが表示されます。

qrc:/main.qml:10:5: QML Image: Cannot open: qrc:/testImage.png

アプリケーションウィンドウは作成されますが、画像は表示されません。また、四角形で画像をラップしようとしましたが、これは役に立ちません。

ここで何が間違っていますか?

「testImage.png」はプロジェクトディレクトリにあり、リソース、絶対、相対を使用して画像パスを指定し、さらにQML UIデザイナーで画像ソースを手動で指定するあらゆる方法を試しました。

また、Qt 5.3.2を動作させるために、提案された変更に従っていたことも言及します [〜#〜] here [〜#〜]

ありがとう。

16
Bruce Dean

qmlファイルはリソースにあると思われるので、testImage.pngリソース内の画像も。アプリを再コンパイルして実行し、イメージが正しく機能することを確認します。

すべて一緒にする必要があります。例えば:

enter image description here

私のコード:

Image
{
    source: "images/earth.png"

このイメージをリソースから削除すると、このエラーも発生しますが、イメージはファイルシステムの正しい場所に残っています。

qmlソースがリソースに配置されている場合、qmlからロードされるすべてのファイルもリソース内にある必要があります(Qtはこのファイルをファイルシステムではなくリソース内で検索します)。

29
Chernobyl

ローカルファイルシステムから検索している場合、ファイルパスと接頭辞「file:」をsource = "file:/root/Desktop/Rathod.png"として取得します

3
user11311318

次の2つの問題があります。

  1. 画像は破損していますが、画像はすべてのプレビューで正しく表示されていましたが、IconImageは画像の読み込みを拒否しています。正しく動作することが知られている別の画像を使用してみてくださいQt Image loaderは画像フォーマットに非常に敏感であるようです。
  2. リソースキャッシュの問題があります。削除してみてくださいqml_qmlcachea.qrcコンパイルフォルダーでもう一度試してください
0
Alfredo cubitos

Qrcを使用している場合、画像がプロジェクトに追加されていることを確認してください。ソースディレクトリに置くだけでは不十分な場合があります。たとえば、私のmain.qmlは特定のディレクトリにあります。 .pngを同じディレクトリに移動します。次に、「Add Existing Files ..」を追加して、プロジェクトに.pngを追加します。私の画像には次のものがあります

source:"qrc:<same dir as main.qml>/image.png"
0
Richard Jessop