2017-07-06 12 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'对象。谢谢! –