作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员
QML 可以很容易地通过 C++ 代码中定义的功能进行扩展。由于 QML 引擎与 Qt 元对象系统的紧密集成,QObject 派生类适当暴露的任何功能都可以从 QML 代码访问,这使得 C++ 中的数据和函数可以直接从 QML 中访问,通常不需要太多修改,甚至不用修改。
通过元对象系统,QML 引擎具有内省 QObject 实例的能力。这意味着,任何 QML 代码都可以访问 QObject 派生类 的以下成员:
- 属性
- 函数
- 信号
一般来说,无论 QObject 派生类是否被注册到 QML 类型系统,这些成员都可以从 QML 中访问。但是,如果 QML 引擎需要访问这个类的附加类型信息(例如,如果类本身被用作一个函数参数或属性,或者以这种方式使用它的一个枚举类型),那么该类可能需要被注册。
暴露属性
任何的 QObject 派生类都可以使用 Q_PROPERTY() 宏来指定属性。属性是类的数据成员,具