Sur cette page

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:

Node

Propriétés

Signaux

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 :

ConstanteDescription
Loader3D.NullLe chargeur est inactif ou aucune source QML n'a été définie.
Loader3D.ReadyLa source QML a été chargée.
Loader3D.LoadingLa source QML est en cours de chargement.
Loader3D.ErrorUne 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.

Voir également source et 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.