Adicione arquivos de imagem no aplicativo Ubuntu QML com plug-ins do C ++ (qrc)

3

Estou escrevendo um aplicativo QML (telefone) do Ubuntu com plug-ins do C ++ usando o ubuntu-sdk. Meu aplicativo inclui uma imagem png e, a fim de incluir a imagem no binário (por isso, mostra no telefone) eu criei um arquivo qrc.

Meu arquivo qrc tem esta aparência:

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

Eu tentei o aplicativo QML com C ++ plugin (cmake) adicionando arquivo de recursos sugere e tem a versão Desktop para funcionar. No entanto, quando executo o aplicativo no meu Aquaris E4.5, a imagem não aparece e recebo o seguinte erro:

QML QQuickImage: Cannot open: file:///opt/click.ubuntu.com/ProjectName.Nickname/0.1/share/qml/app/graphics/bigredbutton.png

A imagem que eu quero mostrar é armazenada no diretório / ProjectName / app / graphics. Estou incluindo o arquivo qrc dentro do diretório de backend e adicionei as linhas indicadas pela pergunta vinculada no CMakeLists.txt dentro do diretório de back-end:

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

Onde os arquivos image / qrc devem ser armazenados, ou que outra configuração é necessária para empacotar a imagem no binário e iniciar o aplicativo com sucesso em um Ubuntu Phone?

Estou no Ubuntu 15.10 usando a última versão do ubuntu-sdk.

    
por koukouviou 16.12.2015 / 23:03

1 resposta

1

Isso é o que funcionou para mim.
Meu resources.qrc está em {PROJECT_DIR} / resources:

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

No meu backend / CMakeLists.txt eu tenho:

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}
)

Eu posso usar as imagens em um arquivo .cpp assim:

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

O projeto tem a estrutura de aplicativo de exemplo padrão, fornecida pelo IDE.
Espero que isso ajude.

    
por moritz 19.12.2015 / 19:11