Qt の C++ から QML の id を取得する方法
QString QQmlContext::nameForObject(QObject *object) const を使うことで QML の id を取得することができます。
ちなみに QObject::property(“id”) では残念ながら取得できません。
サンプルコードはこんな感じになります。
#include <QtQml> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QQmlEngine engine; QQmlComponent component(&engine); component.setData("import QtQml 2.2\nQtObject { id: test }", QUrl()); QObject *object = component.create(); qDebug() << object->property("id"); QQmlContext *context = qmlContext(object); qDebug() << context->nameForObject(object); return 0; }
$ ./getid QVariant(Invalid) "test"