QML文書
QML ドキュメントは、QML ドキュメント構文に従った文字列です。ドキュメントは QML のオブジェクトタイプを定義します。ドキュメントは通常、ローカルまたはリモートに保存された".qml"
ファイルから読み込まれます。ドキュメントで定義されたオブジェクト型のインスタンスは、QMLコードではComponent 、C++ではQQmlComponent 。また、オブジェクトの型が特定の型名でQMLの型システムに明示的に公開されている場合、その型を他の文書のオブジェクト宣言で直接使用することもできます。
ドキュメントの中で再利用可能なQMLオブジェクト型を定義できることは、クライアントがモジュール化された可読性・保守性の高いコードを書くことを可能にする重要な機能です。
Qt 5.4 以降、ドキュメントは".ui.qml"
という拡張子を持つこともできます。QMLエンジンはこれらのファイルを標準の.qmlファイルと同様に扱い、拡張子の.ui
の部分は無視します。Qt Design Studio はこれらのファイルをUI ファイルとして扱います。このファイルにはQML言語機能のサブセットのみを含めることができます。
QMLドキュメントの構造
QMLドキュメントは、importsセクションとオブジェクト宣言セクションの2つのセクションで構成されます。ドキュメントの imports セクションには、ドキュメントが使用できる QML オブジェクトタイプや JavaScript リソースを定義する import 文が含まれています。オブジェクト宣言セクションでは、ドキュメントで定義されたオブジェクトタイプをインスタンス化する際に作成されるオブジェクトツリーを定義します。
簡単なドキュメントの例を以下に示します:
import QtQuick 2.0 Rectangle { width: 300 height: 200 color: "blue" }
詳しくは「QMLドキュメントの構造」を参照してください。
QML言語の構文
ドキュメントのオブジェクト宣言部では、適切なQML 構文を用いて有効なオブジェクト階層を指定しなければなりません。オブジェクト宣言には、独自のオブジェクト属性を指定することができます。オブジェクトのメソッド属性は JavaScript の関数として指定することができ、 オブジェクトのプロパティ属性にはプロパティ結合式を指定することができます。
有効な構文についての詳細はQML の構文についてのドキュメントを、QML と JavaScript の統合についての詳細は QML と JavaScript の統合についてのドキュメントを参照してください。
QMLドキュメントによるオブジェクト型の定義
前の節で簡単に説明したように、ドキュメントは暗黙のうちにQMLのオブジェクト型を定義します。QMLの基本原則の一つは、オブジェクト型を定義し、それを再利用することです。これにより、QMLコードの保守性が向上し、オブジェクト階層宣言の可読性が向上し、UI定義とロジック実装の分離が促進されます。
次の例では、クライアント開発者がButton
型をファイル内のドキュメントで定義しています:
// Button.qml import QtQuick Rectangle { width: 100; height: 100 color: "red" MouseArea { anchors.fill: parent onClicked: console.log("Button clicked!") } }
Button
型はアプリケーションで使用できます:
このトピックの詳細については、ドキュメント内のオブジェクト・タイプの定義に関するドキュメントを参照してください。
リソースのロードとネットワークの透明性
QMLはネットワーク透過的であるということが重要です。アプリケーションはローカルパスからドキュメントを読み込むのと同様に、リモートパスからドキュメントを読み込むことができます。実際、url
のプロパティには、リモートまたはローカルの URL を指定することができ、QMLエンジンはネットワーク通信を処理します。
インポートにおけるネットワークの透過性については、「ネットワークの透過性」のドキュメントを参照してください。
スコープと命名解決
複数のオブジェクトが定義され、異なるオブジェクトが同じ名前のプロパティを持つ可能性があるため、QMLでは事前に定義されたシンボル解決セマンティクスを定義する必要があります。このトピックの詳細については、スコープとシンボル解決のページを参照してください。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。