总结(Summary)

在这一章中,我们主要讨论了动态创建QML元素。折让我们可以自由的创建QML场景,了解了用户可配置与插件结构。

动态加载一个QML元素最简单的方法是使用加载元素(Loader element)。它可以作为一个占位符内容被加载。

使用一种更加动态的方法,Qt.createQmlObject方法可以用于实例化QML字符串。然后这种方法有局限性。最全面的解决方案是动态创建使用Qt.createComponent函数创建组件。然后通过调用组件的createObject函数来创建对象。

由于绑定与信号连接依赖于对象id,或者访问实例化对象。对于动态创建的对象需要另外一种方法,为了创建绑定,需要使用绑定元素(Binding element),连接元素(Connections element)使得与动态创建对象连接信号成为可能。

对于动态创建项,最大的挑战是跟踪它们。可以使用链表模型(ListModel)来完成这件事。有了一个模型用来跟踪动态创建项,可以实现序列化和反序列化函数,可以存储和恢复动态创建场景。