このページでは

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ライセンスの下で利用可能です。
詳細はこちら。