QML オブジェクト型
QML オブジェクト型とは、QML オブジェクトをインスタンス化できる型のことです。
構文的には、QML オブジェクト型とは、型名の後に、そのオブジェクトの属性を囲む一連の中括弧を指定することで、オブジェクトを宣言するために使用できる型のことです。これは、同じようには使用できない値型とは異なります。 たとえば、Rectangle は QML オブジェクト型であり、これを使用して `Rectangle ` 型のオブジェクトを作成できます。これは、オブジェクトではなく単純なデータ型を保持するために使用される、int やbool といったプリミティブ型では行うことができません。
カスタム QML オブジェクト型は、「QML オブジェクト型定義としてのドキュメント」で説明されているように、型を定義する .qml ファイルを作成するか、あるいは「C++ からのQML 型の定義」で説明されているように、C++ から QML 型を定義し、その型を QML エンジンに登録することで定義できます。 いずれの場合も、QML ファイル内で QML オブジェクト型として宣言するには、型名は大文字で始まる必要がある点に注意してください。
C++ およびさまざまな QML 統合方法の詳細については、「C++ と QML の統合の概要」ページを参照してください。
他のモジュールをインポートすることなく使用できる組み込みのオブジェクト型が 2 つあります。QtObject は、すべてのオブジェクト型の基底型です。Component を使用すると、QML ドキュメント内でインラインで新しいオブジェクト型を定義できます。
QML からのオブジェクト型の定義
QMLドキュメントによるオブジェクト型の定義
プラグイン作成者やアプリケーション開発者は、QMLドキュメントとして定義された型を提供することができます。QMLインポートシステムから認識可能なQMLドキュメントは、ファイル名から拡張子を省いた名前で識別される型を定義します。
したがって、「MyButton.qml」という名前の QML ドキュメントが存在する場合、それは「MyButton」型の定義を提供し、QML アプリケーションで使用することができます。
QMLドキュメントの定義方法やQML言語の構文については、QMLドキュメントに関するドキュメントを参照してください。QML言語とQMLドキュメントの定義方法に慣れたら、QMLドキュメント内で独自の再利用可能なQML型を定義および使用する方法について説明したドキュメントを参照してください。
詳細については、「QMLドキュメントによるオブジェクト型の定義」を参照してください。
Component を使用した匿名型の定義
QML 内からオブジェクト型を作成するもう 1 つの方法は、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 と競合することはありません。これら2つのid値は、異なるコンポーネントスコープ内で宣言されているためです。
詳細については、「スコープと名前解決」を参照してください。
C++ からのオブジェクト型の定義
C++プラグイン作成者やアプリケーション開発者は、Qt Qml モジュールが提供するAPIを通じて、C++で定義された型を登録できます。さまざまな登録関数が用意されており、それぞれ異なるユースケースに対応しています。これらの登録関数の詳細や、カスタムC++型をQMLに公開する具体的な方法については、「C++からのQML型の定義」に関するドキュメントを参照してください。
QMLの型システムは、既知のインポートパスにインストールされたインポート、プラグイン、および拡張機能に依存しています。プラグインはサードパーティの開発者によって提供され、クライアントアプリケーションの開発者によって再利用されることがあります。QML拡張モジュールの作成および展開方法の詳細については、QMLモジュールに関するドキュメントを参照してください。
© 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.