Добавить файлы изображений в приложение Ubuntu QML с помощью плагинов C++ (qrc)

Я пишу приложение Ubuntu QML (телефон) с плагинами C++, используя ubuntu-sdk. Мое приложение содержит изображение в формате png, и для того, чтобы включить изображение в двоичный файл (чтобы оно отображалось на телефоне), я создал файл qrc.

Мой файл qrc выглядит так:

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

Я попробовал, что предлагает приложение QML с плагином C++ (cmake), добавляющим файл ресурсов, и заставил работать версию для настольных компьютеров. Однако, когда я запускаю приложение на своем 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.

1 ответ

Решение

Это то, что сработало для меня.
Мои resources.qrc находятся в {PROJECT_DIR}/resources:

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

В моем backend/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.
Надеюсь, это поможет.

Другие вопросы по тегам