2017-04-25 76 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