2016-02-29 8 views
2

Я хочу импортировать пользовательский модуль в свой файл main.qml. Main.qml находится под "/" префикс моего qml.qrc ресурса.Модуль импорта QML

Мой пользовательский модуль Config.qml находится в подкатегории Config. (Config директория, где main.qml есть, т.е. /path/to/main/Config/Config.qml.

config.qml и qmldir файлы хранятся под префиксом myPrefix в файле qml.qrc.

Project 
|- Config 
    |- Config.qml 
    |- qmldir 
|- main.qml 

Также я создал qmldir файл, который в соответствии с документацией http://doc.qt.io/qt-5/qtqml-modules-identifiedmodules.html. Вот мои файлы Config.qml и qmldir.

Config.qml

pragma Singleton 
import QtQuick 2.0 
QtObject { 
    property int myVariable: 10 
} 

qmldir

singleton Config 1.0 Config.qml 

Когда я хочу, чтобы импортировать свой собственный модуль, как MyModule в файле main.qml.

import "???" as MyModule 

Как я могу это сделать? Есть ли у кого-то предложение?

Edit:

QRC файл

<RCC> 
<qresource prefix="/"> 
    <file>main.qml</file> 
</qresource> 
<qresource prefix="/myPrefix"> 
<file>Config/qmldir</file> 
<file>Config/Config.qml</file> 
</qresource> 

+1

Разве папка с модулем не имеет того же имени, что и модуль? – Arpegius

+0

Также didn 'работает с импортом Config 1.0, когда я перешел на модуль Config – OnurA

ответ

1

От documentation:

файл qmldir модуля должен находиться в структуре каталогов внутри важ t, который отражает строку идентификатора идентификатора URI, где каждая точка («.») в идентификаторе отражает под-уровень в дереве каталогов. Например, файл qmldir модуля com.mycompany.mymodule должен находиться в подпункте com/mycompany/mymodule/qmldir где-то в пути импорта.

Таким образом, вы должны изменить module MyModule к module Config или импортировать его в определенном пути:

import "./Config" as MyModule 
+0

Я думаю, что проблема в том, что у меня есть префикс для каталога Config в файле qml.qrc, а инструкция import также должна включать qrc:/prefix/... как-то. Но я не могу понять, как это сделать. Можете ли вы написать пример с префиксом перед каталогом Config? – OnurA

+0

Я отредактировал мой оригинальный вопрос и добавил соответствующий файл .qrc – OnurA

0

** Вопрос был изменен после ответа Arpegius поднять еще один вопрос, я отвечу на этот новый вопрос. **

Это не имеет никакого отношения к qrc-prefix.
Я считаю, что вы смешиваете два разных метода импорта.


С или без префикса, чтобы импортировать модуль, который нужно установить импорт-путь двигателя QtQuick соответственно.

В вашем случае, потому что ваш каталог модуля в каталоге проекта корня:

engine.addImportPath("qrc:/"); 
// Now engine will look for subfolders which could be modules == with a qmldir 

И в вашем main.qml вы делаете импорт, используя префикс путь вместо пути файловой системы:

import myPrefix 1.0 as MyNamespace 

Вы также можете импортировать простые QML файлы, а не как модуль:

// Because the path is relative to main.qml even in a qrc 
import "myPrefix" as MyNamespace 

Тогда вам не нужен qmldir.