web-dev-qa-db-ja.com

C ++プラグイン(qrc)を使用してUbuntu QMLアプリに画像ファイルを追加する

私は、ubuntu-sdkを使用してC++プラグインでUbuntu QML(電話)アプリを作成しています。私のアプリにはpng画像が含まれており、その画像をバイナリに含めるため(電話で表示されるように)、qrcファイルを作成しました。

私のqrcファイルは次のようになります。

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
    <file>../../../app/graphics/bigredbutton.png</file>
</qresource>
</RCC>

C++プラグイン(cmake)リソースファイルを追加したQMLアプリ が示唆することを試し、デスクトップバージョンが動作するようにしました。ただし、Aquaris E4.5でアプリを実行すると、画像が表示されず、次のエラーが表示されます。

QML QQuickImage:開くことができません:file:///opt/click.ubuntu.com/ProjectName.Nickname/0.1/share/qml/app/graphics/bigredbutton.png

表示したい画像は/ ProjectName/app/graphicsディレクトリに保存されます。バックエンドディレクトリ内にqrcファイルを含め、バックエンドディレクトリ内のCMakeLists.txtにリンクされた質問が示す行を追加しました。

set(CMAKE_AUTORCC ON) 
qt5_add_resources(RESOURCES modules/ProjectName/myres.qrc)

Image/qrcファイルはどこに保存する必要がありますか、またはイメージをバイナリにパックし、Ubuntu Phoneでアプリを正常に起動するために必要な他の構成は何ですか?

Ubuntu 15.10で最新のubuntu-sdkバージョンを使用しています。

3
koukouviou

これは私のために働いたものです。
resources.qrcは{PROJECT_DIR}/resourcesにあります。

<RCC>
    <qresource prefix="/180">
        <file alias="five">180/five_180.png</file>
        ...
    </qresource>
</RCC>

私のバックエンド/CMakeLists.txtには次のものがあります:

qt5_add_resources(RESOURCE_ADDED ${CMAKE_SOURCE_DIR}/resources/resources.qrc)
...
add_library(Projectnamebackend MODULE
    ${RESOURCE_ADDED}
)
...
add_custom_target(Projectnamebackend-qmldir ALL
    COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/modules/Projectname/qmldir ${CMAKE_CURRENT_BINARY_DIR}/Projectname
    DEPENDS ${QMLFILES} ${RESOURCE_ADDED}
)

その後、次のように.cppファイルの画像を使用できます。

m_image = QImage(":/180/one");

プロジェクトには、IDEによって指定されたデフォルトのexample-app構造があります。
これがお役に立てば幸いです。

1
moritz