Qt Quick 3D - Beispiel für dynamische Modellerstellung
Demonstriert die dynamische Modellerstellung.
Dieses Beispiel zeigt, wie Modelle in einer Anwendung dynamisch erstellt werden. Zu Beginn der Anwendung werden 10 Modelle dynamisch erstellt, und weitere können mit den Schaltflächen + und - hinzugefügt oder entfernt werden.
Einrichten
Spawner-Knoten
Wir benötigen einen Node, um die dynamisch erstellten Modelle zu speichern.
Starten
Wir erstellen 10 Modelle auf Component.onCompleted
, damit das Beispiel etwas beim Start zeigt.
Component.onCompleted: { for (var i = 0; i < 10; ++i) shapeSpawner.addShape() }
Dynamische Modelle
Hinzufügen von Modellen
Um ein neues Element zur Szene hinzuzufügen, verwenden wir zunächst die Funktion Qt.createComponent, um ein Component für unser Modell zu erstellen. Dann verwenden wir die Funktion createObject der Komponente, um das Element zu instanziieren, wobei wir die Position und den Maßstab als Parameter übergeben.
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 }
Entfernen von Modellen
Dynamisch erstellte Modelle werden einfach entfernt, indem man sie aus dem Instanzstapel herausnimmt und vernichtet.
function removeShape() { if (instances.length > 0) { let instance = instances.pop(); instance.destroy(); count = instances.length } }
© 2025 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.