2016-02-29 137 views
2

我想在我的main.qml文件中導入自定義模塊。 Main.qml位於我的qml.qrc資源的"/"前綴下。QML導入模塊

我的自定義模塊Config.qml位於Config子目錄內。 (Config目錄是main.qml是,即/path/to/main/Config/Config.qml

config.qmlqmldir文件存儲在前綴myPrefix下在qml.qrc文件。

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

另外我創建其根據本文檔的qmldir文件http://doc.qt.io/qt-5/qtqml-modules-identifiedmodules.html必要的。這是我的Config.qmlqmldir文件。

Config.qml

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

qmldir

singleton Config 1.0 Config.qml 

當我想導入我的自定義模塊MyModulemain.qml文件。

import "???" as MyModule 

我該怎麼做?有人有建議嗎?

編輯:

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

也沒有與導入配置1.0的工作,當我改變到模塊配置 – OnurA

回答

1

documentation

該模塊的qmldir文件必須在祁門功夫駐留在目錄結構t路徑反映了URI點狀標識符字符串,其中標識符中的每個點(「。」)都反映了目錄樹中的一個子級別。例如,模塊com.mycompany.mymodule的qmldir文件必須位於導入路徑某處的子路徑com/mycompany/mymodule/qmldir中。

所以,你應該改變module MyModulemodule Config或特定的路徑中導入:Arpegius的答案後

import "./Config" as MyModule 
+0

我認爲問題是,我有一個前綴爲qml.qrc文件中的配置目錄,並且導入語句也應包括qrc:/前綴/ ... 不知何故。但我無法弄清楚如何。你能寫一個前綴在Config目錄前面的例子嗎? – OnurA

+0

我編輯了我的原始問題並添加了相關的.qrc文件 – OnurA

0

** 問題已改爲提出另一個問題,我回答這個新課題。 **

這與無關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。