Добавить файлы изображений в приложение 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.
Надеюсь, это поможет.