Loader3D QML Type
Ermöglicht das dynamische Laden eines 3D-Teilbaums über eine URL oder eine 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)
Ausführliche Beschreibung
Loader3D wird verwendet, um QML-Komponenten für Qt Quick 3D dynamisch zu laden.
Loader3D kann eine QML-Datei (über die Eigenschaft „ source “) oder ein „ Component “-Objekt (über die Eigenschaft „ sourceComponent “) laden. Es ist nützlich, um die Erstellung einer Komponente so lange aufzuschieben, bis sie benötigt wird: zum Beispiel, wenn eine Komponente bedarfsweise erstellt werden soll oder wenn eine Komponente aus Leistungsgründen nicht unnötig erstellt werden soll.
Hinweis: Loader3D funktioniert genauso wie Loader. Der Unterschied zwischen den beiden besteht darin, dass Loader eine Möglichkeit bietet, Objekte dynamisch zu laden, die von Item erben, während Loader3D eine Möglichkeit bietet, Objekte zu laden, die von Object3D erben und Teil einer 3D-Szene sind.
Dokumentation zu den Eigenschaften
active : bool
Diese Eigenschaft lautet „ true “, wenn „ Loader3D “ derzeit aktiv ist. Der Standardwert für diese Eigenschaft ist „ true “.
Ist der „ Loader3D “ inaktiv, führt eine Änderung von „ source “ oder „ sourceComponent “ nicht dazu, dass das Element instanziiert wird, bis der „ Loader3D “ aktiviert wird.
Wird der Wert auf „inactive“ gesetzt, werden alle vom Loader geladenen „ item “ freigegeben, was jedoch keine Auswirkungen auf „ source “ oder „ sourceComponent “ hat.
Der „ status “ eines inaktiven Laders ist immer „ Null “.
Siehe auch „ source “ und „ sourceComponent “.
asynchronous : bool
Diese Eigenschaft legt fest, ob die Komponente asynchron instanziiert wird. Standardmäßig ist sie auf „ false “ gesetzt.
Bei Verwendung in Verbindung mit der Eigenschaft „ source “ erfolgen das Laden und die Kompilierung ebenfalls in einem Hintergrund-Thread.
Das asynchrone Laden erstellt die von der Komponente deklarierten Objekte über mehrere Frames hinweg und verringert die Wahrscheinlichkeit von Störungen in der Animation. Beim asynchronen Laden ändert sich der Status zu „ Loader3D.Loading“. Sobald die gesamte Komponente erstellt wurde, steht „ item “ zur Verfügung und der Status ändert sich zu „Loader.Ready“.
Wird der Wert dieser Eigenschaft auf „ false “ gesetzt, während ein asynchrones Laden läuft, wird eine sofortige, synchrone Fertigstellung erzwungen. Dies ermöglicht es, ein asynchrones Laden zu starten und anschließend die Fertigstellung zu erzwingen, falls auf den Inhalt von „ Loader3D “ zugegriffen werden muss, bevor das asynchrone Laden abgeschlossen ist.
Um zu vermeiden, dass die Elemente schrittweise geladen werden, setzen Sie „ visible “ entsprechend, z. B.
Loader3D {
source: "mycomponent.qml"
asynchronous: true
visible: status == Loader3D.Ready
}Beachten Sie, dass diese Eigenschaft nur die Instanziierung von Objekten betrifft; sie steht in keinem Zusammenhang mit dem asynchronen Laden einer Komponente über ein Netzwerk.
item : object [read-only]
Diese Eigenschaft enthält das derzeit geladene Objekt der obersten Ebene.
progress : real [read-only]
Diese Eigenschaft gibt den Fortschritt beim Laden von QML-Daten aus dem Netzwerk an, von 0,0 (noch nichts geladen) bis 1,0 (abgeschlossen). Da die meisten QML-Dateien recht klein sind, ändert sich dieser Wert schnell von 0 auf 1.
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 eine leere Zeichenkette oder setzen Sie „ sourceComponent “ auf „ undefined “. Das Setzen von „ source “ auf eine neue URL führt ebenfalls dazu, dass das durch die vorherige URL erstellte Element entladen wird.
Siehe auch „ sourceComponent “, „ status “ und „ progress “.
sourceComponent : Component
Diese Eigenschaft enthält das 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 “.
Siehe auch „ source “ und „ progress “.
status : enumeration [read-only]
Diese Eigenschaft gibt den Status des QML-Ladevorgangs an. Mögliche Werte sind:
| Konstante | Beschreibung |
|---|---|
Loader3D.Null | Der Loader ist inaktiv oder es wurde keine QML-Quelle festgelegt. |
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 bereitzustellen oder auf die Statusänderung in irgendeiner Weise zu reagieren. Sie könnten beispielsweise:
- Eine Zustandsänderung auslösen:
State { name: 'loaded'; when: loader.status == Loader3D.Ready } - Einen Signal-Handler für „
onStatusChanged“ implementieren:Loader3D { id: loader onStatusChanged: if (loader.status == Loader3D.Ready) console.log('Loaded') } - Eine Bindung an den Statuswert herstellen:
Text { text: loader.status == Loader3D.Ready ? 'Loaded' : 'Not loaded' }
Beachten Sie, dass der Status zunächst „Ready“ (oder „Error“) lautet, wenn die Quelle eine lokale Datei ist. In diesem Fall wird zwar kein „onStatusChanged“-Signal ausgelöst, aber das „onLoaded“-Signal wird dennoch aufgerufen.
Siehe auch „ progress “.
Signal-Dokumentation
loaded()
Dieses Signal wird ausgelöst, wenn der Wert von „ status “ auf „ Loader3D.Ready “ wechselt oder beim erfolgreichen ersten Laden.
Der entsprechende Handler ist onLoaded.
Hinweis: Der zugehörige Handler ist „ onLoaded “.
Methodendokumentation
object setSource(url source, object properties)
Erstellt eine Objektinstanz der angegebenen „ source “-Komponente, die die angegebene „ properties “ aufweist. 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 den Wert „ false “ hat, wird die angegebene „ source “-Komponente nicht geladen, aber die „ source “ und die anfänglichen „ properties “ werden zwischengespeichert. Wenn der Loader auf „ active “ gesetzt wird, wird eine Instanz der „ source “-Komponente erstellt, wobei die anfänglichen „ properties “ festgelegt werden.
Das Festlegen der anfänglichen Eigenschaftswerte einer Instanz einer Komponente auf diese Weise löst keine zugehörigen „ Behavior“ aus.
Beachten Sie, dass die zwischengespeicherten „ properties “ gelöscht werden, wenn die „ source “ oder „ sourceComponent “ nach dem Aufruf dieser Funktion, aber vor dem Setzen des „loader“ active geändert werden.
© 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.