1、假设有一个 QML 文件,如下所示代码:
2、使用 QQmlComponent 或 QQuickView 的 C++ 代码加载该 QML 文档。当使用 QQmlComponent 时,需要调用 QQmlComponent::create() 来创建组件的新实例化对象代码
3、使用QQuickView 后会自动创建组件的实例,该实例可以通过 QQuickView::rootObject() 来访问该对象代码:
4、实例化对象(object)创建后,就可以使用 QObject::setProperty() 或者 QQmlProperty 来修改其属性代码:
5、将 object 转换为其实际类型,并使用编译时安全性调用方法。在这种情况下,main.qml 的基本对象是一个 Item,由 QQuickItem 类定义代码:
6、QML 组竭惮蚕斗件实质上是具有子对象的对象树,子对象有兄弟,也有孩子。可以使用 QObject::objectN锾攒揉敫ame 属性和 QObject::findChild() 来定位 QML 组件的子对象。例如,如果 QML 中的根 Item 有一个 Rectangle 子项:
7、调用QML方法:所有的 QML 方法都被暴露给了 Qt 元对象系统,可以使用 QMetaObject::invokeMethod() 从 C++ 中调用。从 QML 传递的方法参数和返回值在 C++ 中被转换为 QVariant 值。