Qt Quick 3D - Beispiel für die dynamische Modellerstellung
Veranschaulicht die dynamische Modellerstellung.
Dieses Beispiel veranschaulicht die dynamische Erstellung von Modellen in einer Anwendung. Zu Beginn der Anwendung werden 10 Modelle dynamisch erstellt; über die Schaltflächen „+“ und „-“ können weitere Modelle hinzugefügt oder entfernt werden.

Einrichtung
Spawner-Knoten
Wir benötigen einen „ Node “, um die dynamisch erstellten Modelle zu speichern.
Start
Wir erstellen beim „ Component.onCompleted “ 10 Modelle, damit das Beispiel beim Start etwas anzeigt.
Component.onCompleted: {
for (var i = 0; i < 10; ++i)
shapeSpawner.addShape()
}Dynamische Modelle
Modelle hinzufügen
Um der Szene ein neues Element hinzuzufügen, erstellen wir zunächst mit der Funktion „ Qt.createComponent “ eine „ Component “ für unser Modell. Anschließend instanziieren wir das Element mithilfe der Funktion „ createObject “ der Komponente und übergeben dabei Position und Skalierung als Parameter.
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
}Modelle entfernen
Dynamisch erstellte Modelle werden einfach entfernt, indem sie aus dem Instanzstapel entfernt und zerstört werden.
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.