无法访问驻留在同一目录中的QML单例

时间:2017-07-06 06:24:52

标签: qt qml qtquick2 importerror project-structure

我收到了这个错误:

  

qrc:/qml/Accessor.qml:5:ReferenceError:未定义MySingleton

我的项目结构:

| 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 个答案:

答案 0 :(得分:1)

解决方案:我必须将import "."添加到Accessor.qml