QMLオブジェクトの型
QML オブジェクト型とは、QML オブジェクトをインスタンス化するための型です。
構文的には、QML オブジェクト型はオブジェクトを宣言するための型であり、型名の後に中括弧で オブジェクトの属性を囲みます。これは同じようには使えない値型とは異なります。例えば、Rectangle はQMLのオブジェクト型です。Rectangle
型のオブジェクトを生成するために使用することができます。int
やbool
のようなプリミティブ型はオブジェクトではなく、単純なデータ型 を保持するために使われます。
カスタムのQMLオブジェクト型は、「QMLオブジェクト型の定義としての文書」で 説明したように、型を定義した.qmlファイルを作成することで定義することもできますし、 「C++からQML型を定義する」で説明したように、C++からQML型を定義し、QMLエンジ ンに登録することで定義することもできます。どちらの場合も、QMLファイルの中でQMLオブジェクト型として宣言するためには、型名は大文字で始まらなければならないことに注意してください。
C++ と様々な QML の統合方法についての詳細は、C++ と QML の統合の概要のページをご参照ください。
QML からオブジェクト型を定義する
QML ドキュメントによるオブジェクト型の定義
プラグイン作成者やアプリケーション開発者は、QML ドキュメントとして定義された型 を提供することができます。QML ドキュメントは、QML インポートシステムから見える形で、ファイル名から拡張子 を除いた名前で定義されます。
従って、"MyButton.qml "という名前のQMLドキュメントが存在する場合、そのドキュメントは "MyButton "という型を定義し、QMLアプリケーションで使用することができます。
QMLドキュメントの定義方法やQML言語の構文については、QMLドキュメントを参照してください。QML言語とQMLドキュメントの定義方法に慣れたら、QMLドキュメントの中で再利用可能な独自のQML型を定義し、使用する方法を説明したドキュメントを参照してください。
詳しくは「QMLドキュメントによるオブジェクト型の定義」をご覧ください。
コンポーネントによる匿名型の定義
QMLの中でオブジェクト型を定義するもう一つの方法として、Component 型を使う方法があります。これによって、.qml
ファイル内の別のドキュメントを使用する代わりに、QML ドキュメント内で型をインライン定義することができます。
Item { id: root width: 500; height: 500 Component { id: myComponent Rectangle { width: 100; height: 100; color: "red" } } Component.onCompleted: { myComponent.createObject(root) myComponent.createObject(root, {"x": 200}) } }
myComponent
オブジェクトは基本的に匿名型を定義しており、Component::createObject を使ってインスタンス化することで、この匿名型のオブジェクトを作成することができます。
インラインコンポーネントは通常のトップレベルコンポーネントと同じ特徴を持ち、 QMLドキュメントと同じimport
。
Component オブジェクト宣言は、それぞれ独自のコンポーネントスコープを作成することに注意してください。Component オブジェクト宣言内で使用され、参照されるid値は、そのスコープ内で一意でなければなりませんが、インラインコンポーネントが宣言されたドキュメント内で一意である必要はありません。つまり、myComponent
オブジェクト宣言で宣言されたRectangle は、root
というid を持つことができ、同じドキュメント内のItem オブジェクトで宣言されたroot
と衝突することはありません。
詳細については、「スコープと命名解決」を参照してください。
C++ からのオブジェクト型の定義
C++ プラグイン作成者やアプリケーション開発者は、Qt Qml モジュールが提供する API を使用して、C++ で定義された型を登録することができます。様々な登録関数があり、それぞれ異なるユースケースを満たすことができます。これらの登録関数や、C++のカスタム型をQMLに公開するための詳細については、C++からQMLの型を定義する を参照してください。
QMLの型システムは、インポート、プラグイン、拡張機能が既知のインポートパスにインス トールされていることを前提としています。プラグインはサードパーティの開発者によって提供され、クライアントアプリケーションの開発者によって再利用されます。QML 拡張モジュールの作成方法とデプロイ方法の詳細については、QML モジュールに関するドキュメントを参照してください。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。