Qt Quick 3D - 动态模型创建示例

演示动态模型创建。

本示例演示在应用程序中动态创建模型。应用程序启动时创建10个模型,可以使用“+”和“-”按钮添加或删除更多模型。

配置

创建节点

我们需要一个 节点 来存储动态创建的模型。

Node {
    id: shapeSpawner
    property real range: 300
    property var instances: []
    property int count
    ...
启动

我们在 Component.onCompleted 时创建了10个模型,以便示例显示启动时的情况。

Component.onCompleted: {
    for (var i = 0; i < 10; ++i)
        shapeSpawner.addShape()
}

动态模型

添加模型

为了向场景中添加新项目,我们首先使用 Qt.createComponent 函数创建我们模型的 Component。然后我们使用组件的 createObject 函数来实例化项,传入位置和缩放作为参数。

function addShape()
{
    var xPos = (2 * Math.random() * range) - range;
    var yPos = (2 * Math.random() * range) - range;
    var zPos = (2 * Math.random() * range) - range;
    var shapeComponent = Qt.createComponent("WeirdShape.qml");
    let instance = shapeComponent.createObject(shapeSpawner,
        { "x": xPos, "y": yPos, "z": zPos, "scale": Qt.vector3d(0.25, 0.25, 0.25)});
    instances.push(instance);
    count = instances.length
}
删除模型

动态创建的模型通过从实例堆栈中弹出和销毁它们来删除。

function removeShape()
{
    if (instances.length > 0) {
        let instance = instances.pop();
        instance.destroy();
        count = instances.length
    }
}

文件

© 2024 The Qt Company Ltd. 本文档贡献的版权属于各自的所有者。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 及其相应标志是 The Qt Company Ltd. 在芬兰以及全球其他国家的商标。所有其他商标均为各自所有者的财产。