QMLの型システム

QML文書中のオブジェクト階層の定義に使われる型は、様々なソースから得ることができます。それらは以下のようなものです:

  • QML言語がネイティブに提供するもの
  • QMLモジュールによってC++経由で登録されたもの
  • QMLモジュールによってQML文書として提供されるもの

さらに、アプリケーション開発者は、C++の型を直接登録したり、QML文書の中で再利用可能なコンポーネントを定義し、それをインポートすることによって、独自の型を提供することができます。

型の定義元がどこであれ、エンジンはそれらの型のプロパティやインスタンスに対して型安全性を強制します。

QMLの値型

QML言語では、整数、倍精度浮動小数点数、文字列、ブール値などの様々なプリミティブ型が組み込みでサポートされています。オブジェクトはこれらの型のプロパティを持つことができ、 またこれらの型の値はオブジェクトのメソッドの引数として渡すことができます。

値型の詳細についてはQML 値型を参照してください。

QML オブジェクト型

QML オブジェクト型とは、QML オブジェクトをインスタンス化するための型です。QML オブジェクト型はQtObject から派生したもので、 QML モジュールによって提供されます。アプリケーションはこれらのモジュールをインポートすることで、それらが提供する オブジェクト型を利用することができます。QtQuick モジュールはQMLでユーザーインターフェースを作成するために必要な最も一般的なオブジェクト型を提供しています。

最後に、全てのQML文書は暗黙のうちにQMLオブジェクト型を定義しており、 他のQML文書で再利用することができます。オブジェクト型の詳細については、QML型システムのオブジェクト型に関する文書を参照してください。

QMLシーケンス型

シーケンス型は、一連の値やオブジェクトを格納するために使用することができます。

シーケンス型の詳細については、QMLの型システムのシーケンス型に関するドキュメントを参照してください。

QML 名前空間

QML 名前空間を使用すると、C++ の名前空間から列挙型を公開することができます。

名前空間についての詳細な情報は、QML型システムの名前空間についてのドキュメントを参照ください。

JavaScript の型

JavaScript のオブジェクトや配列は QML エンジンでサポートされています。どのような標準的な JavaScript 型でも、汎用的なvar 型を用いて作成・保存することができます。

例えば、以下のようにDateArray といった標準的な型が利用可能です:

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 式を参照してください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。