Auf dieser Seite

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.

42 farbenfrohe Qt-Logo-Modelle, die im dunklen Weltraum verstreut sind und die dynamische Objekterstellung veranschaulichen

Einrichtung

Spawner-Knoten

Wir benötigen einen „ Node “, um die dynamisch erstellten Modelle zu speichern.

Node {
    id: shapeSpawner
    property real range: 300
    property var instances: []
    property int count
    ...
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
    }
}

Beispielprojekt @ 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.