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

Differentiate class type of QML objects in C++

本文关键字:类型 对象 QML C++ 区分      更新时间:2023-10-16

我有一个自定义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区分开来?

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

QML

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

C++

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