Qt 5 の未来は明るいブログ

Qt の C++ から QML の id を取得する方法

Published: 2014-06-14

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"