未找到具有注册类型的 QML 模块

QML Module not found with registered types

我有以下问题:

main.qml 我得到了这些错误。虽然我可以在代码中完美地使用这些类型。看起来这只是一个智能感知问题。

这些类型在main.cpp中注册:

这些 类 在 include 文件夹中定义:

我的文件夹结构如下所示:

我必须在 pro 文件中修改 QML_IMPORT_PATH 吗?我添加了 src 和 include 文件夹,但它不起作用:

QML_IMPORT_PATH += src
QML_IMPORT_PATH += include

代码本身运行良好。这只是一个 Intellisense 问题。

您需要运行此代码。 QtCreator 因标记不存在或不会存在的错误而臭名昭著。它会标记 .ui 文件的头文件,因为您还没有 运行 a build,所以它们还没有生成。许多开发人员绘制他们的 UI 文件然后做一个假的 build 只是为了生成这些文件所以 QtCreator 关闭。

您需要做的另一件事是提供其中一个 classes 的完整源代码。 (我假设他们都有同样的问题。)

example Qt gives here 不是一个好人。你永远不应该能够“新建”一个单身人士。如果内部指针为空,则构造函数应受保护,Instance() 方法应构造一个且仅一个。

在每个 classes 中,您实际上都有一个名为 get() 的方法吗?它实际上 return 是一个指针吗?许多 return 参考,这就是我问的原因。如果我们忽略了能够“新建”一个单例的明显错误,那么这个例子中有一件好事。

QScopedPointer<SingletonTypeExample> example(new SingletonTypeExample);

他们使用 QScopedPointer 指向 class。

qmlRegisterSingletonInstance("Qt.example.qobjectSingleton", 1, 0, "MyApi", example.get());

一旦你真正找到了uild,你就会在需要的地方获得所有的 MOC 信息。这很可能会让 QtCreator 高兴。老实说,我已经不再查看 QtCreator 标记的内容了,因为有太多误报了。

我认为这只是一个 Qt Creator 错误。看看 this 一个。 qmlRegisterSingletonInstance 已添加到 Qt 5.14 版本的 Qt 库中。尽管 Qt Creator 4.13.3 是用 Qt 5.15.2 构建的,但它使用的 QML 代码模型显然还没有更新。