У меня есть QQuickView, который загрузил qml-файл, как показано ниже.Как получить имя экземпляра QObject для разбора QML?
Rectangle { width: 100; height: 100 }
Затем я возвращаю корневой объект через QObject *root = view->rootObject()
. Теперь я хочу получить имя класса из этого объекта. Следующий код приводит к «QQuickRectangle»
root->metaObject()->className()
Но то, что я хочу «Прямоугольник» так же, как TypeName в файле QML. Любая идея?
Редактировать: Я хочу построить древовидное изображение с объектом hirarchie файла qml, такого как QtCreator.
Если у меня есть пользовательский тип QML, например 'Test.qml', где' Item' является корневым элементом, 'console.log() 'печатает его как' qml: QQuickItem (0x2a63b050) 'не как' Test_QMLTYPE_X', поэтому я теряю тип в этом случае. Протестировано с Qt 5.7.0, MinGW. – folibis
Имя класса C++ и имя типа QML не должны иметь никакого отношения. 'qmlRegisterType()' принимает произвольную строку (до тех пор, пока она является допустимым именем типа) в качестве ее четвертого аргумента –
@folibis - это странно, для меня она всегда печатает QMLTYPE независимо от того, что является корневым элементом и как оно реализованы. – dtech