Recently, I have encountered the same problem. I need a meta object without having to instantiate the class itself. Best of all, I could create a global / static function that retrieves qmetaobject with the class name. I achieved this using QObject :: staticMetaObject.
QMetaObject GetMetaObjectByClassName(QString strClassName) { QMetaObject metaObj; if (strClassName.compare("MyClass1") == 0) { metaObj = MyClass1::staticMetaObject; } else if (strClassName.compare("MyClass2") == 0) { metaObj = MyClass2::staticMetaObject; } else if (strClassName.compare("MyClass3") == 0) { metaObj = MyClass3::staticMetaObject; } else if (strClassName.compare("MyClass4") == 0) { metaObj = MyClass4::staticMetaObject; } else if (strClassName.compare("MyClass5") == 0) { metaObj = MyClass5::staticMetaObject; }
See: http://doc.qt.io/qt-5/qobject.html#staticMetaObject-var
If anyone has a better option, please share!
Juan Gonzalez Burgos
source share