QML15、将 C++ 类型的属性暴露给 QML

将 C++ 类型的属性暴露给 QML

QML 可以使用 C++ 代码中定义的功能轻松扩展。由于 QML 引擎与 Qt 元对象系统的紧密集成,任何由 QObject 派生类适当公开的功能都可以从 QML 代码访问。这使得 C++ 数据和函数可以直接从 QML 访问,通常只需很少或无需修改。

QML 引擎具有通过元对象系统内省 QObject 实例的能力。这意味着任何 QML 代码都可以访问 QObject 派生类实例的以下成员:

  • 属性

  • 方法(如果它们是公共槽或使用 Q_INVOKABLE 标记)

  • 信号

(此外,如果枚举已使用 Q_ENUMS 声明,则枚举可用。有关详细信息,请参阅 QML 和 C++ 之间的数据类型转换。)

通常,无论 QObject 派生类是否已在 QML 类型系统中注册,它们都可以从 QML 访问。但是,如果要以需要引擎访问其他类型信息的方式使用类 - 例如,如果类本身要用作方法参数或属性,或者它的枚举类型之一是以这种方式使用 - 那么类可能需要注册。

另请注意,本文档中涵盖的一些重要概念在使用 C++ 编写 QML 扩展教程中进行了演示。

数据类型处理和所有权

从 C++ 传输到 QML 的任何数据,无论是作为属性值、方法参数或返回值,还是信号参数值,都必须是 QML 引擎支持的类型。

默认情况下,引擎支持许多 Qt C++ 类型,并且可以在从 QML 使用时自动适当地转换它们。此外,使用 QML 类型系统注册的 C++ 类可以用作数据类型,如果适当注

你可能感兴趣的:(QML,c++,开发语言)