Qt Quick 3D - Exemple de création de modèle dynamique
Illustre la création dynamique de modèles.
Cet exemple montre comment créer des modèles de manière dynamique dans une application. 10 modèles sont créés dynamiquement au démarrage de l'application, et il est possible d'en ajouter ou d'en supprimer à l'aide des boutons + et -.

Configuration
Nœud Spawner
Nous allons avoir besoin d’un nœud « Node » pour contenir les modèles créés dynamiquement.
Démarrage
Nous créons 10 modèles lors de l'Component.onCompleted afin que l'exemple affiche quelque chose dès le démarrage.
Component.onCompleted: {
for (var i = 0; i < 10; ++i)
shapeSpawner.addShape()
}Modèles dynamiques
Ajout de modèles
Pour ajouter un nouvel élément à la scène, nous utilisons d’abord la fonction ` Qt.createComponent ` afin de créer une instance ` Component ` pour notre modèle. Ensuite, nous utilisons la fonction ` createObject ` du composant pour instancier l’élément, en lui transmettant la position et l’échelle en tant que paramètres.
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
}Suppression de modèles
Les modèles créés dynamiquement sont supprimés simplement en les retirant de la pile d'instances et en les détruisant.
function removeShape()
{
if (instances.length > 0) {
let instance = instances.pop();
instance.destroy();
count = instances.length
}
}© 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.