2017-04-25 25 views
0

我正在創建一個在前端使用qml創建新對象onclicked的應用程序。適當的方法是創建一個QOBJECT輔助類,它將僅用於實例化其他類的新對象?在Qt前端用戶創建新對象的適當技術

編輯:我想從qml的前端創建一個C++對象。我不創建qml對象。所以,如果我點擊我的按鈕,C++會實例化一個新對象。這就是爲什麼我問我是否需要創建一個專門的QOBJECT類,該類只有public signal方法才能創建其他類的新對象。

或者我應該只有一個類可以使用指針實例化自己的新對象?

+0

QML方應該知道新創建的C++對象嗎?誰將擁有(QObject父?)創建的對象? – GrecKo

+0

對於這個特定的對象,不,QML不需要知道。 – LetTheWritersWrite

回答

0

最有效的解決方案是使用單身。它將避免工廠對象查找的開銷,並且它不會將創建的對象與任何特定的狀態關聯起來,這種狀態被稱爲使用對象生存期的玩弄技巧。

此外,如果您從C++創建QML對象,則可以避免相當數量的內存使用量膨脹。您也可以將C++對象作爲單例:

qmlRegisterSingletonType<YourSingleton>("Module", 1, 0, "Singleton", singletonFactoryCallback); 
+0

我在我的問題中增加了更多細節。我不相信單身是我需要的。 – LetTheWritersWrite

+0

你相信什麼都沒有關係,特別是當你缺乏這方面的知識和經驗時。單身是迄今爲止最有效的解決方案。如果你創建C++或者QML對象,它並不重要,你可以執行其中一個或者兩個。你可以使用'make()'函數創建一個'class Factory:public QObject {}',將其註冊爲單例,然後從QML導入並使用它。 – dtech

+0

哇。它比'QObject'作爲上下文屬性註冊更有效率嗎?如果OP有用C++編寫的自定義QML類型並需要從中創建對象,單身人士將如何提供幫助?對我來說,這個問題在目前的狀態下太模糊,以至於說單身是最有效的解決方案。 – GrecKo