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"