Loader3D QML Type
Ermöglicht das dynamische Laden eines 3D-Teilbaums von einer URL oder Komponente. Mehr...
Import Statement: | import QtQuick3D |
Inherits: |
Eigenschaften
- active : bool
- asynchronous : bool
- item : object
- progress : real
- source : url
- sourceComponent : Component
- status : enumeration
Signale
- loaded()
Methoden
- object setSource(url source, object properties)
Detaillierte Beschreibung
Loader3D wird zum dynamischen Laden von QML-Komponenten für Qt Quick 3D verwendet.
Loader3D kann eine QML-Datei (mit der Eigenschaft source ) oder ein Component Objekt (mit der Eigenschaft sourceComponent ) laden. Er ist nützlich, um die Erstellung einer Komponente zu verzögern, bis sie benötigt wird: z.B. wenn eine Komponente bei Bedarf erstellt werden soll, oder wenn eine Komponente aus Leistungsgründen nicht unnötig erstellt werden soll.
Hinweis: Loader3D funktioniert auf die gleiche Weise wie Loader. Der Unterschied zwischen den beiden ist, dass Loader eine Möglichkeit bietet, Objekte, die von Item erben, dynamisch zu laden, während Loader3D eine Möglichkeit bietet, Objekte zu laden, die von Object3D erben und Teil einer 3D-Szene sind.
Eigenschaft Dokumentation
active : bool |
Diese Eigenschaft ist true
, wenn die Loader3D gerade aktiv ist. Der Standardwert für diese Eigenschaft ist true
.
Wenn Loader3D inaktiv ist, bewirkt eine Änderung von source oder sourceComponent nicht, dass das Element instanziiert wird, bis Loader3D aktiviert wird.
Wird der Wert auf inaktiv gesetzt, werden alle vom Loader geladenen item freigegeben, die source oder sourceComponent bleiben davon unberührt.
Der status eines inaktiven Loaders ist immer Null
.
Siehe auch source und sourceComponent.
asynchronous : bool |
Diese Eigenschaft gibt an, ob die Komponente asynchron instanziiert wird. Standardmäßig lautet sie false
.
Wenn sie in Verbindung mit der Eigenschaft source verwendet wird, werden das Laden und die Kompilierung ebenfalls in einem Hintergrund-Thread durchgeführt.
Durch asynchrones Laden werden die von der Komponente deklarierten Objekte über mehrere Frames hinweg erstellt, wodurch die Wahrscheinlichkeit von Störungen in der Animation verringert wird. Beim asynchronen Laden ändert sich der Status in Loader3D.Loading. Sobald die gesamte Komponente erstellt wurde, ist die Website item verfügbar und der Status ändert sich in Loader.Ready.
Wird der Wert dieser Eigenschaft während eines asynchronen Ladevorgangs auf false
geändert, wird ein sofortiger, synchroner Abschluss erzwungen. Dies ermöglicht es, ein asynchrones Laden zu beginnen und dann den Abschluss zu erzwingen, wenn auf den Inhalt von Loader3D zugegriffen werden muss, bevor das asynchrone Laden abgeschlossen ist.
Um zu vermeiden, dass die Elemente nach und nach geladen werden, setzen Sie visible
entsprechend, z. B.
Loader3D { source: "mycomponent.qml" asynchronous: true visible: status == Loader3D.Ready }
Beachten Sie, dass sich diese Eigenschaft nur auf die Instanziierung von Objekten auswirkt; sie hat nichts mit dem asynchronen Laden einer Komponente über ein Netzwerk zu tun.
item : object |
Diese Eigenschaft enthält das Top-Level-Objekt, das gerade geladen wird.
progress : real |
Diese Eigenschaft zeigt den Fortschritt des Ladens von QML-Daten aus dem Netzwerk an, von 0.0 (nichts geladen) bis 1.0 (fertig). Die meisten QML-Dateien sind recht klein, so dass sich dieser Wert schnell von 0 auf 1 ändert.
Siehe auch status.
source : url |
Diese Eigenschaft enthält die URL der zu instanziierenden QML-Komponente.
Um das aktuell geladene Objekt zu entladen, setzen Sie diese Eigenschaft auf einen leeren String oder setzen Sie sourceComponent auf undefined
. Wenn Sie source
auf eine neue URL setzen, wird auch das von der vorherigen URL erstellte Objekt entladen.
Siehe auch sourceComponent, status, und progress.
sourceComponent : Component |
Diese Eigenschaft enthält die zu instanziierende Component.
Item { Component { id: redCube Model { source: "#Cube" materials: DefaultMaterial { diffuseColor: "red" } } } Loader3D { sourceComponent: redCube } Loader3D { sourceComponent: redCube; x: 10 } }
Um das aktuell geladene Objekt zu entladen, setzen Sie diese Eigenschaft auf undefined
.
status : enumeration |
Diese Eigenschaft enthält den Status des QML-Ladens. Sie kann einer der folgenden Werte sein:
Konstante | Beschreibung |
---|---|
Loader3D.Null | Der Lader ist inaktiv oder es wurde keine QML-Quelle gesetzt. |
Loader3D.Ready | Die QML-Quelle wurde geladen. |
Loader3D.Loading | Die QML-Quelle wird gerade geladen. |
Loader3D.Error | Beim Laden der QML-Quelle ist ein Fehler aufgetreten. |
Verwenden Sie diesen Status, um eine Aktualisierung vorzunehmen oder auf irgendeine Weise auf die Statusänderung zu reagieren. Zum Beispiel könnten Sie:
- Eine Statusänderung auslösen:
State { name: 'loaded'; when: loader.status == Loader3D.Ready }
- Implementieren Sie einen
onStatusChanged
signal handler:Loader3D { id: loader onStatusChanged: if (loader.status == Loader3D.Ready) console.log('Loaded') }
- Bindung an den Statuswert:
Text { text: loader.status == Loader3D.Ready ? 'Loaded' : 'Not loaded' }
Beachten Sie, dass, wenn die Quelle eine lokale Datei ist, der Status anfänglich Ready (oder Error) sein wird. Während es in diesem Fall kein onStatusChanged-Signal gibt, wird das onLoaded-Signal trotzdem aufgerufen.
Siehe auch progress.
Signal-Dokumentation
loaded() |
Dieses Signal wird ausgegeben, wenn status zu Loader3D.Ready
wird, oder bei erfolgreichem ersten Laden.
Der entsprechende Handler ist onLoaded
.
Hinweis: Der entsprechende Handler ist onLoaded
.
Methode Dokumentation
object setSource(url source, object properties) |
Erzeugt eine Objektinstanz der angegebenen source Komponente, die die angegebene properties hat. Das Argument properties ist optional. Auf die Instanz kann über die Eigenschaft item zugegriffen werden, sobald das Laden und die Instanziierung abgeschlossen sind.
Wenn die Eigenschaft active zum Zeitpunkt des Aufrufs dieser Funktion false
ist, wird die angegebene Komponente source nicht geladen, sondern die source und die anfängliche properties werden zwischengespeichert. Wenn der Loader auf active gesetzt wird, wird eine Instanz der Komponente source mit dem Initialwert properties erstellt.
Das Einstellen der anfänglichen Eigenschaftswerte einer Instanz einer Komponente auf diese Weise löst keine zugehörigen Behaviors aus.
Beachten Sie, dass der Zwischenspeicher properties gelöscht wird, wenn source oder sourceComponent nach dem Aufruf dieser Funktion, aber vor dem Setzen des Loaders active geändert wird.
© 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.