QML импорт rcc модулей - PullRequest
       15

QML импорт rcc модулей

0 голосов
/ 25 апреля 2018

Я пытаюсь создать приложение, в котором я использую модули rcc, но я получаю сообщение об ошибке «модули не установлены».

У меня есть следующие папки и файлы:

MainFolder
  |_Folder1
    |_Folder11
       |_qmldir
       |_MyButton.qml
  |_Folder2
    |_qmldir
    |_MyComponent.qml
Application
  |_application.pro
  |_main.cpp
  |_main.qml
  |_rccFolders
    |_folder11.rcc
    |_folder2.rcc   

Myqmldirs содержит:

В папке 11:

module MainFolder.Folder1.Folder11
MyButton 1.0 MyButton.qml

В папке 2:

module MainFolder.Folder2
MyComponent 1.0 MyComponent.qml

Файл main.cpp:

 #include ...

int main(int argc, char *argv[])
{
  QGuiApplication app(argc, argv);

  QString sourcePath="C:/path_to_rcc_files/";
  QQmlApplicationEngine engine;

  QResource::registerResource(sourcePath+"folder11.rcc");
  QResource::registerResource(sourcePath+"folder2.rcc");

  engine.addImportPath(":/"); //to use .rcc files
  engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

  return app.exec();
}

Основной.qml:

//QML imports
import MainFolder.Folder1.Folder11
import MainFolder.Folder2

ApplicationWindow
{
  ...
}

Но когда я запускаю приложение, я получаю:

qrc:/main.qml:... module "MainFolder.Folder1.Folder11" is not installed
qrc:/main.qml:... module "MainFolder.Folder2" is not installed

Что не так в моем коде?Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Возможно, вы могли бы попытаться использовать путь импорта с префиксом qrc::

engine.addImportPath("qrc:/");

Я не совсем уверен (а на самом деле документация говорит, что должны работать и нотации :/ и qrc:/), но я помню, что у меня были некоторые подобные проблемы в прошлом. По крайней мере, в моих приложениях (где я использую похожую структуру) я всегда использую префикс qrc:/.

0 голосов
/ 25 апреля 2018
  1. Вы можете отладить проблемы с ресурсами (перейти к разделу «Отладка» в конце), используя QML_IMPORT_TRACE

  2. Там написано import <ModuleIdentifier> <Version.Number> [as <Qualifier>], поэтому обязательно попробуйте:

 import MainFolder.Folder1.Folder11.MyButton 1.0
 import MainFolder.Folder2.MyComponent 1.0
...