このページでは

Loader3D QML Type

URLまたはコンポーネントから3Dサブツリーを動的に読み込むことができます。詳細...

Import Statement: import QtQuick3D
Inherits:

Node

プロパティ

信号

方法

  • object setSource(url source, object properties)

詳細な説明

Loader3Dは、Qt Quick 3D用のQMLコンポーネントを動的に読み込むために使用されます。

Loader3Dは、QMLファイル(source プロパティを使用)またはComponent オブジェクト(sourceComponent プロパティを使用)を読み込むことができます。これは、コンポーネントが必要になるまでその生成を遅らせる場合に役立ちます。例えば、コンポーネントをオンデマンドで生成する必要がある場合や、パフォーマンス上の理由から不必要にコンポーネントを生成すべきでない場合などが挙げられます。

注:Loader3Dは Loader と同様に動作します。両者の違いは、Loader がItem を継承するオブジェクトを動的に読み込む手段を提供するのに対し、Loader3DはObject3D を継承し、3Dシーンの一部であるオブジェクトを読み込む手段を提供する点にあります。

プロパティのドキュメント

active : bool

Loader3D が現在アクティブな場合、このプロパティはtrue となります。このプロパティのデフォルト値はtrue です。

Loader3D が非アクティブの場合、source またはsourceComponent を変更しても、Loader3D がアクティブになるまでは、そのアイテムはインスタンス化されません。

この値を「inactive」に設定すると、そのローダーによって読み込まれたすべてのitem が解放されますが、source やsourceComponent には影響しません。

非アクティブなローダーのstatus は、常にNull となります。

「 source 」および「sourceComponent 」も参照してください 。

asynchronous : bool

このプロパティは、コンポーネントが非同期でインスタンス化されるかどうかを指定します。デフォルトでは、false に設定されています。

source プロパティと組み合わせて使用すると、読み込みとコンパイルもバックグラウンドスレッドで実行されます。

非同期で読み込むと、コンポーネントによって宣言されたオブジェクトが複数のフレームにわたって生成され、アニメーションの不具合が発生する可能性が低くなります。非同期で読み込む際、ステータスは「Loader3D.Loading」に変わります。コンポーネント全体が作成されると、「item 」が利用可能になり、ステータスは「Loader.Ready」に変わります。

非同期読み込みが進行中にこのプロパティの値を `false ` に変更すると、即座に同期的な完了が強制されます。これにより、非同期読み込みを開始した後、非同期読み込みが完了する前に `Loader3D ` のコンテンツにアクセスする必要がある場合に、読み込みを強制的に完了させることができます。

アイテムの読み込みが段階的に表示されるのを避けるには、visible を適切に設定してください。例:

Loader3D {
    source: "mycomponent.qml"
    asynchronous: true
    visible: status == Loader3D.Ready
}

なお、このプロパティはオブジェクトのインスタンス化にのみ影響し、ネットワーク経由でのコンポーネントの非同期読み込みとは無関係であることに注意してください。

item : object [read-only]

このプロパティには、現在読み込まれている最上位のオブジェクトが格納されます。

progress : real [read-only]

このプロパティは、ネットワークから QML データを読み込む進捗状況を、0.0(読み込みなし)から 1.0(完了)までの範囲で保持します。ほとんどの QML ファイルはサイズがかなり小さいため、この値は 0 から 1 へと急速に変化します。

statusも参照してください 。

source : url

このプロパティには、インスタンス化するQMLコンポーネントのURLが格納されます。

現在読み込まれているオブジェクトをアンロードするには、このプロパティを空の文字列に設定するか、sourceComponent をundefined に設定します。source を新しいURLに設定しても、以前のURLによって作成されたアイテムがアンロードされます。

sourceComponent 、status 、およびprogressも参照してください 。

sourceComponent : Component

このプロパティには、インスタンス化するComponent が格納されます。

Item {
    Component {
        id: redCube
        Model {
            source: "#Cube"
            materials: DefaultMaterial {
                diffuseColor: "red"
            }
        }
    }

    Loader3D { sourceComponent: redCube }
    Loader3D { sourceComponent: redCube; x: 10 }
}

現在ロードされているオブジェクトをアンロードするには、このプロパティをundefined に設定します。

「 source 」および「progress 」も参照してください 。

status : enumeration [read-only]

このプロパティは、QMLの読み込み状態を表します。以下のいずれかの値をとります:

定数説明
Loader3D.Nullローダーが非アクティブであるか、QMLソースが設定されていません。
Loader3D.ReadyQMLソースが読み込まれています。
Loader3D.LoadingQMLソースが現在読み込まれています。
Loader3D.ErrorQML ソースの読み込み中にエラーが発生しました。

このステータスを使用して、更新情報を提供したり、ステータスの変更に対して何らかの対応を行ったりしてください。例えば、次のような処理が可能です:

  • 状態の変更をトリガーする:
    State { name: 'loaded'; when: loader.status == Loader3D.Ready }
  • onStatusChanged シグナルハンドラを実装する:
    Loader3D {
        id: loader
        onStatusChanged: if (loader.status == Loader3D.Ready) console.log('Loaded')
    }
  • ステータス値にバインドする:
    Text { text: loader.status == Loader3D.Ready ? 'Loaded' : 'Not loaded' }

ソースがローカルファイルの場合、ステータスは最初は「Ready」(または「Error」)になります。その場合は onStatusChanged シグナルは発生しませんが、onLoaded は引き続き呼び出されます。

progressも参照してください 。

シグナルのドキュメント

loaded()

このシグナルは、status がLoader3D.Ready になったとき、または初期読み込みが成功したときに発生します。

対応するハンドラはonLoaded です。

注: 対応するハンドラは onLoaded です。

メソッドのドキュメント

object setSource(url source, object properties)

指定されたsource コンポーネントのオブジェクトインスタンスを作成し、指定されたproperties を設定します。properties 引数はオプションです。読み込みとインスタンス化が完了すると、item プロパティを介してこのインスタンスにアクセスできるようになります。

この関数が呼び出された時点でactive プロパティの値がfalse である場合、指定されたsource コンポーネントは読み込まれませんが、source および初期のproperties はキャッシュされます。ローダーがactive に設定されると、初期のproperties が設定されたsource コンポーネントのインスタンスが作成されます。

この方法でコンポーネントのインスタンスの初期プロパティ値を設定しても、関連するBehaviorはトリガーされません。

なお、この関数の呼び出し後、ローダーの `active` を設定する前に `source ` または `sourceComponent ` が変更された場合、キャッシュされた `properties ` はクリアされることに注意してください。

source および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.