无法访问位于同一目录中的 QML 单例
Posted
技术标签:
【中文标题】无法访问位于同一目录中的 QML 单例【英文标题】:Cannot access QML singleton residing in same dir 【发布时间】:2017-07-06 06:24:52 【问题描述】:我收到此错误:
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】:解决方案:我必须将import "."
添加到Accessor.qml
。
【讨论】:
这是一个长期存在的错误。要么导入点,要么从 C++ 注册单例。 @dtech 我什至不知道import "."
让您无需从 c++ 注册即可访问 pragma Singleton
对象。谢谢!以上是关于无法访问位于同一目录中的 QML 单例的主要内容,如果未能解决你的问题,请参考以下文章