QMLとJavaScriptの統合
QML言語ではJSONに似た構文を使用し、様々な式やメソッドをJavaScriptの関数として定義することができます。また、JavaScriptファイルをインポートし、インポートされた機能を利用することもできます。
これにより、開発者やデザイナーはJavaScriptの知識を活用し、ユーザーインターフェースやアプリケーションロジックを迅速に開発することができます。
JavaScript表現
QMLはJavaScriptと深く統合されており、シグナルハンドラや メソッドをJavaScriptで定義することができます。QMLのもう一つの中核的な機能として、JavaScriptで定義されたプロパティバインディングを用いて、オブジェクトのプロパティ間の関係を指定し、強制することができます。
QML での JavaScript 式の使い方については、QML ドキュメントの JavaScript 式を参照してください。
JavaScriptによる動的なQMLオブジェクトの生成
QML では、JavaScript から動的にオブジェクトを生成することができます。これは、オブジェクトのインスタンス化を必要なときまで遅らせ、 アプリケーションの起動時間を短縮するのに便利です。また、ビジュアルオブジェクトを動的に生成し、ユーザー入力やその他のイベントに反応してシーンに追加することもできます。この機能は主に2つの方法で使用できます。
オブジェクトの動的生成を使って、JavaScriptから命令的にオブジェクトを動的に生成することができます。これは、QMLをアプリケーションのスクリプト言語として使用する場合などに便利です。
注意: ユーザーインターフェースを作成する場合、オブジェクトを動的に作成する方法としては、QMLエンジンやツールとの統合性を考慮し、宣言的な構造を用いることが望ましいでしょう。この機能を実現するために、Loader,Instantiator,Repeater のような様々な型が存在します。
JavaScriptリソース
JavaScript関数で定義されたアプリケーションロジックは、JavaScriptリソースとして知られる個別のJavaScriptファイルに分離することができます。JavaScriptリソースには、セマンティクスが異なるいくつかの種類があります。
QMLにおけるJavaScriptリソースの定義については、「QMLにおけるJavaScriptリソースの定義」を参照してください。
JavaScriptのインポート
QMLドキュメントはJavaScriptリソースをインポートすることができ、JavaScriptリソースはQMLモジュールと同様に他のJavaScriptリソースをインポートすることができます。これにより、アプリケーション開発者はアプリケーションロジックをモジュール化された自己完結型のファイルとして提供することができます。
JavaScriptリソースのインポート方法や、インポートしたリソースの機能の使い方については、「JavaScriptリソースのインポート」を参照してください。
JavaScript ホスト環境
QMLエンジンが提供するJavaScript環境は、ウェブブラウザが提供するJavaScript環境と若干の違いがあります。また、QMLエンジンは、JavaScriptの開発者には馴染みのない様々なオブジェクトをルートコンテキストとして提供します。
これらの制限や拡張については、QMLエンジンが提供するJavaScriptホスト環境の説明の中に記述されています。
また、JavaScript エンジンのメモリ管理についても詳しく説明しています。
JavaScript エンジンの設定
特定の使用例では、JavaScript エンジンがメモリの処理や JavaScript のコンパイルに使用するパラメータのいくつかをオーバーライドしたくなるかもしれません。これらのパラメータの詳細については、JavaScript エンジンの設定を参照してください。
© 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.