2017-07-06 66 views
2

我得到這個錯誤:無法訪問QML單身居住在同一目錄

qrc:/qml/Accessor.qml:5: ReferenceError: MySingleton is not defined

我的項目結構:文件

| main.cpp 
| main.qml 
| qml/ 
+--- Accessor.qml 
+--- MySingleton.qml 
+--- qmldir 

內容:

main.cpp中:

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 

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

    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 

    return app.exec(); 
} 

main.qml

import QtQuick 2.6 
import QtQuick.Window 2.2 
import "qml/" 

Accessor { 
} 

QML/Accessor.qml

import QtQml 2.2 
//import qml 1.0 

QtObject { 
    property int foo: MySingleton.foo 
} 

QML/MySingleton.qml

pragma Singleton 
import QtQml 2.2 

QtObject { 
    property int foo: 0 
} 

QML/qmldir

module qml 

singleton MySingleton 1.0 MySingleton.qml 

qml.qrc

<RCC> 
    <qresource prefix="/"> 
     <file>main.qml</file> 
     <file>qml/Accessor.qml</file> 
     <file>qml/MySingleton.qml</file> 
     <file>qml/qmldir</file> 
    </qresource> 
</RCC> 

取消註釋在Accessor.qml的import qml 1.0沒有幫助。但是當Accessor.qml在項目根目錄下時,它工作正常。

任何想法?

回答

1

解決方法:我必須將import "."加入Accessor.qml

+1

這是一個長期存在的錯誤。導入點或從C++註冊單例。 – dtech

+0

@dtech我甚至都不知道「import」。「'你可以在不用C++註冊的情況下訪問'pragma Singleton'對象。謝謝! –