En esta página

Qt Quick 3D - Ejemplo de creación de un modelo dinámico

Demuestra la creación dinámica de modelos.

Este ejemplo muestra la creación dinámica de modelos en una aplicación. Se crean 10 modelos dinámicamente al inicio de la aplicación, y se pueden añadir o eliminar más utilizando los botones + y -.

42 coloridos modelos de logotipos Qt dispersos en un espacio oscuro que demuestran la creación dinámica de objetos.

Configuración

Nodo Spawner

Vamos a necesitar un Node para contener los modelos creados dinámicamente.

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

Vamos a crear 10 modelos en Component.onCompleted para que el ejemplo muestre algo al inicio.

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

Modelos Dinámicos

Añadir Modelos

Para añadir un nuevo elemento a la escena, primero utilizamos la función Qt.createComponent para crear un Component para nuestro modelo. Luego usamos la función createObject del componente para instanciar el elemento, pasando la posición y la escala como parámetros.

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
}
Eliminación de modelos

Los modelos creados dinámicamente se eliminan simplemente sacándolos y destruyéndolos de la pila de instancias.

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

Proyecto de ejemplo @ code.qt.io

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.