このページでは

C

インポート・ステートメント

import文の構文

import文では、QML文書内で使用したいモジュールを列挙することができます。文書内で使用する型は、インポートするモジュールやリソースによって異なります。

モジュール(名前空間)のインポート

モジュールのインポートは最も一般的なインポートです。QMLオブジェクトの型を登録するQMLモジュールを、指定された名前空間にインポートすることができます。

モジュールインポートの一般的な形式は以下の通りです:

import <ModuleIdentifier> [<Version.Number>] [as <Qualifier>]
  • <ModuleIdentifier> はドットURI記法で指定された識別子で、モジュールが提供する型名前空間を一意に識別します。
  • <Version.Number>Qt Quick コードとのソース互換性のためだけに意味があります。Qt Quick Ultraliteでは<Version.Number> は無視されます。バージョンを指定しても、利用可能な型や機能は変わりません。
  • <Qualifier> はオプションのローカル名前空間識別子で、モジュールが提供するオブジェクト型を参照するために使用します。省略すると、モジュールのオブジェクト型はグローバル名前空間にインストールされます。

非修飾モジュールのインポートの例を以下に示す:

import QtQuick

このインポートでは、QtQuick モジュールの最新バージョンで提供されるすべての型を、修飾子を指定することなく使用できます。例えば、矩形を作成するコードは以下のようになる:

import QtQuick

Rectangle {
    width: 200
    height: 100
    color: "red"
}

修飾子付きモジュールのインポートの例を以下に示す:

import QtQuick as Quick

このインポートでは、競合する型名を提供する複数のモジュールをインポートすることができます。このインポートにより、競合する型名を提供する複数のモジュールをインポートすることができます。ただし、修飾名前空間内のモジュールが提供する型の各使用法では、競合を明確に解決するために修飾子接頭辞を使用する必要があります。

修飾モジュールのインポートを使用した後に矩形を作成するコードの例を以下に示します:

import QtQuick as Quick

Quick.Rectangle {
    width: 200
    height: 100
    color: "red"
}

修飾されたインポートについての詳細は、修飾されたローカル名前空間へのインポートを参照してください。

注意: インポートされたモジュールが提供していないオブジェクト型を QML文書が参照したり使用したりすると、エラーが発生します。例えば、以下の QML 文書はQtQuick をインポートしていないため、Rectangle 型を使用することができません:

Rectangle {
    width: 200
    height: 100
    color: "red"
}

この場合、コンパイルエラーが表示されます。

修飾されたローカル名前空間へのインポート

import ステートメントでは、オプションとしてas キーワードを使用することで、特定のドキュメント・ローカル名前空間に型をインポートすることができます。名前空間が指定されている場合、インポートによって使用可能になる型への参照は、ローカルの名前空間修飾子を先頭に付けなければなりません。

以下の例では、QtQuick モジュールが"CoreItems" 名前空間にインポートされています。QtQuick モジュールの型を参照する場合は、先頭にCoreItems を付けなければなりません:

import QtQuick as CoreItems

CoreItems.Rectangle {
    width: 100; height: 100

    CoreItems.Text { text: "Hello, world!" }

    // WRONG! No namespace prefix - the Text type won't be found
    Text { text: "Hello, world!" }
}

名前空間は、ファイルの範囲内でモジュールの識別子として機能します。名前空間は、ファイルの範囲内でモジュールの識別子として機能します。名前空間はルート・オブジェクトの属性にはならず、プロパティやシグナル、メソッドと同様に外部から参照することができます。

名前空間インポートは、同じ名前でありながら異なるモジュールに含まれる2つの QML型を使用する必要がある場合に便利です。この場合、2つのモジュールを異なる名前空間にインポートすることで、コードが正しい型を参照できるようになります:

import QtQuick as CoreItems
import MyCompany.TextWidgets as MyModule

CoreItems.Rectangle {
    width: 100; height: 100

    MyModule.Text { text: "Hello from my custom text item!" }
    CoreItems.Text { text: "Hello from Qt Quick!" }
}

上の例では、MyCompany.TextWidgets の URI が、モジュール作成時に指定した URI と一致していなければなりません。

また、複数のモジュールを同じ名前空間にインポートすることもできます。例えば

import QtQuick
import QtPositioning
import QtLocation

Rectangle {
    id: root

    property real zoomLevel: 17

    Map {
        id: map

        anchors.fill: parent
        center {
            latitude: 65.011762
            longitude: 25.470841
        }
        zoomLevel: root.zoomLevel
        minimumZoomLevel: 10
        maximumZoomLevel: 18
    }
}

特定の Qt ライセンスの下で利用可能です。
詳細を確認してください。