QML 和 C++ 之间的数据类型转换
在 QML 和 C++ 之间交换数据值时,QML 引擎会将它们转换为具有适合在 QML 或 C++ 中使用的正确数据类型。 这要求交换的数据是引擎可识别的类型。
QML 引擎为大量 Qt C++ 数据类型提供内置支持。 此外,自定义 C++ 类型可以向 QML 类型系统注册,以使它们可用于引擎。
本页讨论 QML 引擎支持的数据类型以及它们如何在 QML 和 C++ 之间转换。
数据所有权
当数据从 C++ 传输到 QML 时,数据的所有权始终属于 C++。 此规则的例外是从显式 C++ 方法调用返回 QObject:在这种情况下,QML 引擎假定对象的所有权,除非已通过调用 QQmlEngine: 将对象的所有权明确设置为保留在 C++ 中: 指定了 QQmlEngine::CppOwnership 的 setObjectOwnership()。
此外,QML 引擎尊重 Qt C++ 对象的正常 QObject 父所有权语义,并且永远不会删除具有父级的 QObject 实例。
基本 Qt 数据类型
默认情况下,QML 识别以下 Qt 数据类型,这些数据类型在从 C++ 传递到 QML 时会自动转换为相应的 QML 基本类型,反之亦然:
|