我需要获取QMetaObject来动态创建对象实例。 如果我khow对象然后QObject :: metaObject()是我需要的。如果我知道这个类,那么我可以使用QObject :: staticMetaObject变量。但是,如果我只知道类名作为字符串值,我应该使用什么?如何从类名获得QMetaObject?
4
A
回答
3
你问QMetaObject
,但说它是为了创造的目的。如果这就是你所要做的,QMetaType可能就是你需要的。你必须用它注册你的类型,但我很确定QT没有一个QMetaObject
的主列表,只是在默认情况下浮动,所以无论你做什么,这样的注册都是必要的。
QMetaType::Type id = QMetaType::type("ClassName");
if(id == 0)
throw something_or_whatever;
ClassName* p = (ClassName*)QMetaType::construct(id);
//act on p
QMetaType::destroy(id, p);
在文件粗略地看一眼是不是对p
内存是如何分配清楚,但我相信destroy
需要这一服务?使用风险自负。
+3
我不认为这会起作用。对于要作为QMetaType工作的东西,它需要一个公共拷贝构造函数,并且这些对于QObject来说是明确的不允许的。 – Lendrick 2012-09-11 19:23:45
相关问题
- 1. 如何从类获得拳头类名像类=“class1的ABC”获得“class1的”
- 2. 如果类型位于命名空间中,QMetaObject :: newInstance会失败
- 3. 如何获得类的名称
- 4. 我如何获得Ruby类的名称?
- 5. 如何通过类名获得元素
- 6. 从它的名字只获得类包
- 7. 如何从UIDatePicke获得第二名?
- 8. PHP:如何从名称获得ID
- 9. 如何从最近的获得具有特定类名的值?
- 10. dojo:如何从它的id获得div的类名
- 11. 如何获得名称空间和类名的方法名?
- 12. 如何获得类类型
- 13. 如何获得改名
- 14. 如何获得名单
- 15. 如何获得TimeZoneInfo短名
- 16. 如何获得用户名?
- 17. 如何获得类对象没有实例或类名称
- 18. 如何获得给定类名称的未知类的对象
- 19. 如何获得给定类名的类的实例?
- 20. 从文件名获得mimetype
- 21. 获得从2D名单
- 22. 如何从dns域名中获得简短的“域名”?
- 23. 如何获得泛型类
- 24. 如何获得具有类名称的PID并终止获得的进程
- 25. 如何获取类名?
- 26. 如何获取类名?
- 27. aspxgridview从父类获得MasterRowKeyValue
- 28. Spring - 从@Configuration获得EntityManager类
- 29. 从类别获得价值
- 30. 从哪里获得com.sun.j3d类
调查QVariant的来源。我很确定它有一种方法,你可能会扭曲成你想要的。当然,它将依靠您向QVariant注册您的类型。 – 2011-06-07 00:39:58