Loader3D QML Type
URL またはコンポーネントから 3D サブツリーを動的にロードできるようにします。詳細...
Import Statement: | import QtQuick3D |
Inherits: |
プロパティ
- active : bool
- asynchronous : bool
- item : object
- progress : real
- source : url
- sourceComponent : Component
- status : enumeration
信号
- loaded()
方法
- object setSource(url source, object properties)
詳細説明
Loader3Dは、Qt Quick 3D用のQMLコンポーネントを動的にロードするために使用されます。
Loader3Dは、QMLファイル(source プロパティを使用)またはComponent オブジェクト(sourceComponent プロパティを使用)をロードすることができます。例えば、コンポーネントをオンデマンドで作成する場合や、パフォーマンス上の理由からコンポーネントを不必要に作成しない場合などです。
注意: Loader3Dは、Loader と同じように動作します。両者の違いは、Loader が、Item を継承するオブジェクトを動的にロードする方法を提供するのに対し、Loader3D は、Object3D を継承し、3D シーンの一部であるオブジェクトをロードする方法を提供する点です。
プロパティ Documentation
active : bool |
このプロパティは、Loader3D が現在アクティブであれば、true
となる。このプロパティのデフォルト値はtrue
です。
Loader3D が非アクティブの場合、source またはsourceComponent を変更しても、Loader3D がアクティブになるまでアイテムはインスタンス化されません。
値を非アクティブに設定すると、ローダーによってロードされた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 |
このプロパティは、現在ロードされているトップレベル・オブジェクトを保持します。
progress : real |
このプロパティは、ネットワークからの QML データのロードの進行状況を 0.0(何もロードされていない)から 1.0(ロードが完了した)まで保持します。ほとんどの QML ファイルは非常に小さいので、この値は 0 から 1 へと急速に変化します。
statusも参照してください 。
source : url |
このプロパティは、インスタンス化するQMLコンポーネントのURLを保持します。
現在ロードされているオブジェクトをアンロードするには、このプロパティに空文字列を設定するか、sourceComponent にundefined
を設定してください。source
に新しい URL を設定すると、前の URL で作成されたアイテムもアンロードされます。
sourceComponent 、status 、progressも参照してください 。
sourceComponent : Component |
status : enumeration |
このプロパティは QML のロード状態を保持します。以下のいずれかになります:
定数 | 説明 |
---|---|
Loader3D.Null | ローダーが非アクティブであるか、QMLソースが設定されていない。 |
Loader3D.Ready | QML ソースがロードされました。 |
Loader3D.Loading | QML ソースは現在ロード中です。 |
Loader3D.Error | QML ソースのロード中にエラーが発生しました。 |
このステータスを使用して、最新情報を提供したり、何らかの方法でステータスの変更に対応したりします。例えば、以下のようなことが可能です:
- 状態変更をトリガーする:
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) |
与えられたproperties を持つ、与えられたsource コンポーネントのオブジェクトインスタンスを作成します。properties 引数は省略可能です。このインスタンスは、読み込みとインスタンス化が完了すると、item プロパティからアクセスできるようになります。
この関数が呼ばれた時点でactive プロパティがfalse
の場合、与えられたsource コンポーネントはロードされませんが、source と初期properties はキャッシュされます。ローダーがactive になると、source コンポーネントのインスタンスが、初期properties が設定された状態で作成される。
この方法でコンポーネントのインスタンスの初期プロパティ値を設定しても、関連するBehaviorはトリガされません。
この関数を呼び出した後、ローダーactive を設定する前にsource またはsourceComponent を変更すると、キャッシュされたproperties はクリアされることに注意。
© 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.