0

我尝试创建一个使用 rcc 模块的应用程序,但出现错误“未安装模块”。

我有以下文件夹和文件:

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

我的 qmldirs 包含:

在文件夹 11 中:

module MainFolder.Folder1.Folder11
MyButton 1.0 MyButton.qml

在文件夹 2 中:

module MainFolder.Folder2
MyComponent 1.0 MyComponent.qml

主.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();
}

main.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

我的代码有什么问题?谢谢。

4

2 回答 2

0

也许您可以尝试使用带qrc:前缀的导入路径:

engine.addImportPath("qrc:/");

我不完全确定(实际上文档说 the:/qrc:/notations 都应该工作),但我记得我过去遇到过一些类似的问题。至少在我的应用程序中(我使用类似的结构)我总是使用qrc:/前缀。

于 2018-04-25T19:08:34.110 回答
0
  1. 您可以使用调试资源问题(转到最后的调试部分)QML_IMPORT_TRACE

  2. 它说import <ModuleIdentifier> <Version.Number> [as <Qualifier>]所以一定要尝试:

 import MainFolder.Folder1.Folder11.MyButton 1.0
 import MainFolder.Folder2.MyComponent 1.0
于 2018-04-25T07:58:23.367 回答