QMLの型システム
QML文書のオブジェクト階層の定義に使われる型は、様々なソースから得ることができます。以下のようなものがあります:
- QML言語がネイティブに提供するもの
- QMLモジュールによってC++経由で登録されたもの
- QMLモジュールによってQML文書として提供されるもの
さらに、アプリケーション開発者は、C++の型を直接登録したり、QML文書の中で再利用可能なコンポーネントを定義し、それをインポートすることによって、独自の型を提供することができます。
型の定義元がどこであれ、エンジンはそれらの型のプロパティやインスタンスに対して型安全性を強制します。
QMLオブジェクト型
QML オブジェクト型とは、QML オブジェクトをインスタンス化するための型です。QML オブジェクト型はQtObject から派生したもので、 QML モジュールによって提供されます。アプリケーションはこれらのモジュールをインポートすることで、それらが提供する オブジェクト型を利用することができます。QtQuick モジュールはQMLでユーザーインターフェースを作成するために必要な最も一般的なオブジェクト型を提供しています。
最後に、全てのQML文書は暗黙のうちにQMLオブジェクト型を定義しており、 他のQML文書で再利用することができます。オブジェクト型の詳細については、QML型システムのオブジェクト型に関する文書を参照してください。
QMLの値型
QML言語では、整数、倍精度浮動小数点数、文字列、ブーリアン値などの様々なプリミティブ型が サポートされています。オブジェクトはこれらの型のプロパティを持つことができ、 またこれらの型の値はオブジェクトのメソッドの引数として渡すことができます。
値型の詳細についてはQML 値型を参照してください。
QML シーケンス型
シーケンス型は値やオブジェクトのシーケンスを格納するために使用できます。
シーケンス型の詳細についてはQML 型システムの シーケンス型に関するドキュメント を参照してください。
列挙型
列挙型はQMLでは型の特別なプロパティとして扱われます。
列挙型についての詳しい情報はQML 列挙型についてのドキュメント を参照してください。
シングルトン型
QMLはシングルトン型をサポートしており、各QMLエンジンに1つのインスタンスしか存在しない型を定義することができます。シングルトン型はアプリケーション全体の状態や機能を提供するのに便利です。
詳しくはQMLのシングルトンを参照してください。
アタッチド型
アタッチドプロパティとシグナルハンドラにより、型は他のオブジェクトにアタッチできる追加のプロパティやシグナルを提供することができます。これは、QMLオブジェクトにコンテキスト情報を追加するための強力な仕組みです。
詳細はQML Attached Typesを参照してください。
QML 名前空間
QML 名前空間を使用すると、C++ の名前空間から列挙型を公開することができます。
名前空間についての詳しい情報はQML の型システムの名前空間についてのドキュメント を参照ください。
JavaScript の型
JavaScript のオブジェクトや配列は QML エンジンでサポートされています。どのような標準的な JavaScript 型でも、汎用的なvar 型を用いて作成・保存することができます。
例えば、以下のようにDate やArray といった標準的な型が利用可能です:
import QtQuick Item { property var theArray: [] property var theDate: new Date() Component.onCompleted: { for (var i = 0; i < 10; i++) theArray.push("Item " + i) console.log("There are", theArray.length, "items in the array") console.log("The time is", theDate.toUTCString()) } }
詳しくはQMLドキュメントのJavaScript式を参照してください。
C++との統合
QMLとC++間のデータ型変換
QMLとC++を統合する場合、両環境間でデータの受け渡しが必要になることがよくあ ります。QMLエンジンは、一般的なデータ型については、QMLとC++間のデータ型変換を自動的に行います。
詳細は「QMLとC++間のデータ型変換」を参照してください。
C++ から QML オブジェクトへのアクセス
C++コードは、QMLエンジンからQMLオブジェクトへの参照を取得することで、 QMLオブジェクトにアクセスし、操作することができます。これにより、C++ コードは QML オブジェクトのプロパティを読み書きしたり、メソッドを呼び出したり、 シグナルに接続したりすることができます。
詳しくは「C++からQMLオブジェクトを操作する」を参照してください。
C++ から JavaScript の値を扱う
QML エンジンでは、JavaScript の値をQJSValue や関連するクラスを使って表現しており、 C++ コードで JavaScript オブジェクトや関数、プリミティブ値を扱うことができます。これにより、C++ コードと JavaScript コードのシームレスな統合が可能になります。
詳細については、「C++ からの JavaScript 値との統合」を参照してください。
コンテキスト・プロパティを使ったC++オブジェクトのQMLへの埋め込み
コンテキスト・プロパティは使用しないでください。詳細は「コンテキスト・プロパティを使用した C++ オブジェクトの 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.