是否可以通过类名动态加载由uic生成的.ui类?我需要决定动态加载哪个UI类。我在编译时没有这些信息。我不想使用QUiLoader。相反,我想通过字符串将direct approach here与QMetaType对象实例化结合起来。
即。
QWidget* initiateClassByName(QString name){ int id = QMetaType::type(name.toLatin1()); QWidget* widget=nullptr; if (id != QMetaType::UnknownType) { widget=static_cast< QWidget* > (QMetaType::create(id)); //QMetaType::destroy(id, myClassPtr); //myClassPtr = 0; } return widget; }
与每次实例化特定对话框时动态加载十几个UI文件(存储在Qt资源文件中)相比,我试图提高性能。当我这样做时,我似乎每次都得到一个QMetaType :: UnknownType。想法?感谢。
(嗯,不知道为什么我的功能在这里没有显示为代码块,直到我把它作为报价。)