我需要獲取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. 如何獲得類從特定類型
- 3. 如果類型位於命名空間中,QMetaObject :: newInstance會失敗
- 4. 我如何獲得Ruby類的名稱?
- 5. 如何通過類名獲得元素
- 6. 如何獲得這個類的名字?
- 7. 如何獲得類的名稱
- 8. 從類名獲得產品ID eg'productID_123'
- 9. 獲得單獨的類別名稱從
- 10. 從它的名字只獲得類包
- 11. 如何從buildbot獲得修訂名稱
- 12. 如何從名字中獲得jButton?
- 13. 如何從UIDatePicke獲得第二名?
- 14. PHP:如何從名稱獲得ID
- 15. 如何從模板(django)上獲得類/ id名
- 16. 如何從最近的獲得具有特定類名的值?
- 17. 如何從字符串名稱中獲得Hibernate實體類
- 18. 如何從div中獲得文本值與類名分開?
- 19. dojo:如何從它的id獲得div的類名
- 20. 如何從clr類型獲得Raven DB索引名稱
- 21. 如何獲得類
- 22. 如何獲得名稱空間和類名的方法名?
- 23. 我如何從NSString獲得類?
- 24. ,如何從查詢獲得案例類?
- 25. 如何獲得類類型
- 26. 如何從swing組件獲取類名?
- 27. 如何從字符串獲取類名
- 28. 如何獲得名單
- 29. 如何獲得TimeZoneInfo短名
- 30. 如何獲得用戶名?
調查QVariant的來源。我很確定它有一種方法,你可能會扭曲成你想要的。當然,它將依靠您向QVariant註冊您的類型。 – 2011-06-07 00:39:58