我只有一个包含类名的字符串。
是否可以仅通过类名字符串将该类注册到qt元类型?
当然,自从注册之前,QMetaType::type(const char *typeName)
返回unknowntype,因为该课程尚未注册。
答案 0 :(得分:0)
简答:不 答案很长:不,要在某个地方注册至少需要类型的类型。听起来很有意义,对吧?
你知道我的名字,你知道我是不是很高?不,因为你应该让我知道这一点。类型系统可以从名称中猜出一个类型?该类型是否具有成员函数foo
?是不是一个吊舱?除非您明确提供实际类型,否则无法知道。名称或别名什么都不说,如果您之前已经注册过它们,它们只能用于检索它。
考虑qRegisterMetaType
的具体情况
其中一个重载是一个函数模板,可用于为类型创建别名,表单为:
qRegisterMetaType<Type>("alias");
也就是说,它想知道你要宣告某事的类型 另一个重载具有几乎相同的形式,但事实上它不接受字符串 它们都需要这种类型,如果你之前没有注册它,就无法神奇地将它从字符串中取出来。