qt - 我错过了什么,还是“qmlRegisterSingletonInstance”有错误?
问题描述
当我们使用新的“qmlRegisterSingletonInstance”函数创建一个单例实例时,我们收到一条明显错误的错误消息。我们在 main.cpp 中创建这样的实例:
QScopedPointer<OSClog> OSClog(new class OSClog);
qmlRegisterSingletonInstance("Louma.osclog", 1, 0, "OSClog", OSClog.get() );
但是在我们的 QML 文件中,我们在导入时收到此错误消息,声称找不到模块:
但是可以找到,程序编译运行正常。
如果我们使用不同的函数来创建该类型,错误消息就会消失。改用此代码不会报告错误:
qmlRegisterType<OSClog>("Louma.osclog", 1, 0, "OSClog" );
虽然我们现在需要在 main.qml 中创建组件的实例。
几个月来,我们一直在忍受错误消息,因为直到现在这只是一个小麻烦。我们刚刚发现 Qt-Designer 拒绝加载任何包含该 import 语句的对象。
当然,这个错误也是假的,因为 QML_IMPORT_PATH 是正确的。如果我们将代码从“qmlRegisterSingletonInstance”更改为任何其他注册函数,Qt-Designer 就可以正常工作。
那么,我们对“qmlRegisterSingletonInstance”做错了吗?或者这是一个错误?
谢谢。
解决方案
您似乎正在实例化并正确使用它。正如你所说,它构建和运行都很好,所以它显然是 Qt Creator IDE 中的一个错误。
是的,您可以从 Qt 错误跟踪器中找到未解决的创建者错误添加对 qmlRegisterSingletonInstance 的支持。Qt Creator也未检测到 qmlRegisterSingletonInstance已复制到前一个。