Loader3D QML Type
Permet le chargement dynamique d'une sous-arborescence 3D à partir d'une URL ou d'un composant. En savoir plus...
| Import Statement: | import QtQuick3D |
| Inherits: |
Propriétés
- active : bool
- asynchronous : bool
- item : object
- progress : real
- source : url
- sourceComponent : Component
- status : enumeration
Signaux
- loaded()
Méthodes
- object setSource(url source, object properties)
Description détaillée
Loader3D sert à charger dynamiquement des composants QML pour Qt Quick 3D.
Loader3D peut charger un fichier QML (à l’aide de la propriété « source ») ou un objet « Component » (à l’aide de la propriété « sourceComponent »). Il est utile pour différer la création d’un composant jusqu’à ce qu’il soit nécessaire : par exemple, lorsqu’un composant doit être créé à la demande, ou lorsqu’il ne doit pas être créé inutilement pour des raisons de performances.
Remarque : Loader3D fonctionne de la même manière que Loader. La différence entre les deux réside dans le fait qu’ Loader permet de charger dynamiquement des objets héritant de Item, tandis que Loader3D permet de charger des objets héritant de Object3D et faisant partie d’une scène 3D.
Documentation sur les propriétés
active : bool
Cette propriété prend la valeur « true » si l'Loader3D est actuellement active. La valeur par défaut de cette propriété est « true ».
Si l’ Loader3D est inactif, la modification de source ou de sourceComponent n’entraînera pas l’instanciation de l’élément tant que l’ Loader3D n’aura pas été activé.
Définir la valeur sur « inactive » entraînera la libération de tout « item » chargé par le chargeur, mais n’affectera pas les éléments « source » ou « sourceComponent ».
L’ status d’un chargeur inactif est toujours Null.
Voir également source et sourceComponent.
asynchronous : bool
Cette propriété détermine si le composant sera instancié de manière asynchrone. Par défaut, elle est définie sur « false ».
Lorsqu’elle est utilisée conjointement avec la propriété « source », le chargement et la compilation s’effectuent également dans un thread d’arrière-plan.
Le chargement asynchrone crée les objets déclarés par le composant sur plusieurs images, ce qui réduit le risque de saccades dans l’animation. Lors d’un chargement asynchrone, l’état passe à « Loader3D.Loading ». Une fois le composant entièrement créé, l’ item est disponible et l’état passe à « Loader.Ready ».
Modifier la valeur de cette propriété pour la définir sur « false » alors qu’un chargement asynchrone est en cours forcera une finalisation immédiate et synchrone. Cela permet de lancer un chargement asynchrone, puis d’en forcer la finalisation si le contenu de l’ Loader3D doit être accessible avant la fin du chargement asynchrone.
Pour éviter de voir les éléments se charger progressivement, définissez visible de manière appropriée, par exemple :
Loader3D {
source: "mycomponent.qml"
asynchronous: true
visible: status == Loader3D.Ready
}Notez que cette propriété n’affecte que l’instanciation d’objets ; elle n’a aucun rapport avec le chargement asynchrone d’un composant via un réseau.
item : object [read-only]
Cette propriété contient l'objet de niveau supérieur actuellement chargé.
progress : real [read-only]
Cette propriété indique la progression du chargement des données QML depuis le réseau, de 0,0 (rien n'a été chargé) à 1,0 (chargement terminé). La plupart des fichiers QML étant assez légers, cette valeur passera rapidement de 0 à 1.
Voir également status.
source : url
Cette propriété contient l'URL du composant QML à instancier.
Pour décharger l'objet actuellement chargé, définissez cette propriété sur une chaîne vide, ou définissez ` sourceComponent ` sur ` undefined`. Le fait de définir ` source ` sur une nouvelle URL entraînera également le déchargement de l'élément créé par l'URL précédente.
Voir également sourceComponent, status et progress.
sourceComponent : Component
Cette propriété contient l'Component à instancier.
Item {
Component {
id: redCube
Model {
source: "#Cube"
materials: DefaultMaterial {
diffuseColor: "red"
}
}
}
Loader3D { sourceComponent: redCube }
Loader3D { sourceComponent: redCube; x: 10 }
}Pour décharger l'objet actuellement chargé, définissez cette propriété sur undefined.
Voir également source et progress.
status : enumeration [read-only]
Cette propriété indique l'état du chargement du QML. Elle peut prendre l'une des valeurs suivantes :
| Constante | Description |
|---|---|
Loader3D.Null | Le chargeur est inactif ou aucune source QML n'a été définie. |
Loader3D.Ready | La source QML a été chargée. |
Loader3D.Loading | La source QML est en cours de chargement. |
Loader3D.Error | Une erreur s'est produite lors du chargement de la source QML. |
Utilisez cet état pour fournir une mise à jour ou réagir d’une manière ou d’une autre au changement d’état. Par exemple, vous pourriez :
- Déclencher un changement d'état :
State { name: 'loaded'; when: loader.status == Loader3D.Ready } - Implémenter un gestionnaire de signal «
onStatusChanged» :Loader3D { id: loader onStatusChanged: if (loader.status == Loader3D.Ready) console.log('Loaded') } - Lier la valeur du statut :
Text { text: loader.status == Loader3D.Ready ? 'Loaded' : 'Not loaded' }
Notez que si la source est un fichier local, le statut sera initialement « Ready » (ou « Error »). Bien qu’il n’y ait pas de signal onStatusChanged dans ce cas, la méthode onLoaded sera tout de même appelée.
Voir également progress.
Documentation sur les signaux
loaded()
Ce signal est émis lorsque l'status passe à l'état « Loader3D.Ready », ou lors d'un chargement initial réussi.
Le gestionnaire correspondant est onLoaded.
Remarque : le gestionnaire correspondant est onLoaded.
Documentation des méthodes
object setSource(url source, object properties)
Crée une instance de l'objet du composant « source » spécifié, qui possédera la propriété « properties » indiquée. L'argument « properties » est facultatif. L'instance sera accessible via la propriété « item » une fois le chargement et l'instanciation terminés.
Si la propriété ` active ` est définie sur ` false ` au moment où cette fonction est appelée, le composant ` source ` spécifié ne sera pas chargé, mais les propriétés ` source ` et ` properties ` initiales seront mises en cache. Lorsque le chargeur est défini sur ` active`, une instance du composant ` source ` sera créée avec la valeur initiale de ` properties ` définie.
La définition des valeurs initiales des propriétés d’une instance de composant de cette manière ne déclenchera aucun Behaviorassocié.
Notez que les properties mises en cache seront effacées si la source ou la sourceComponent est modifiée après l'appel de cette fonction, mais avant la configuration du chargeur active.
© 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.