在C ++中区分QML对象的类类型

时间:2014-09-16 13:38:31

标签: c++ qt qml

我有一个自定义的QML矩形,我希望在从C ++访问时区别于内置的QML矩形:

// CustomRectangle.qml
import QtQuick 2.3

Rectangle {
   width: 10
   height: 10
   // property bool dummy // line A
}

当我实例化需要了解对象类型的C ++类时,调用QMetaObject::className会返回QQuickRectangle。但是,如果我通过取消注释第A行来添加属性,则QMetaObject::className现在为CustomRectangle

如何在不添加属性的情况下将这样的类与QQuickRectangle区分开来?

1 个答案:

答案 0 :(得分:2)

您可以使用objectName属性访问该对象。例如:

<强> QML

Rectangle {
   width: 10
   height: 10
   objectName: "MyObject"
}

<强> C ++

QQuickItem *item = view.rootObject()->findChild<QQuickItem*>("MyObject");
item->doSomething();