QML Runtime ツールを使ったプロトタイピング

Qt には、QML ドキュメントを読み込んで表示するユーティリティであるqml が含まれています。

qml このユーティリティは、主にQMLアプリケーションやコンポーネントをテストするためのものです。QMLアプリケーションを本番環境で動作させるためには、多くの場合、カスタムC++アプリケーションを開発するか、QMLファイルをモジュールにバンドルする必要があります。詳しくはQMLアプリケーションの配布を参照してください。素のItem をルート要素として与えると、qml は自動的にウィンドウを作成してシーンを表示します。注目すべきは、QQmlComponent::create ()はそのようなことをしないことです。したがって、qml で開発されたプロトタイプから C++アプリケーションに移行する場合、ルート要素をWindow にするか、C++でQQuickView を作成してルートItem を保持する必要があります。しかしその間に、qml ツールを使って、プロトタイプの一部を個別にロードし、テストすることができます。

.qmlファイルを読み込むには、コマンドプロンプトでファイルパスを指定します:

$ qml myqmlfile.qml

設定オプションを見るには、--help 引数を指定してqml を実行してください。

ロードするQMLファイルのルートオブジェクトがWindowではなくItemの場合、表示するためにはWindowにラップする必要があります。この作業が保留されている間、すでにロードされているトップレベルのオブジェクトはPartialScene オブジェクトで表現されます。qml PartialScene PartialScene.container プロパティはコンテナコンポーネントの QML ソースコードを指す URL を与え、通常、最初にロードされた をラップする を宣言します。このように、ItemをWindowにラップするプロセスはプログラム可能です。デフォルトでは、これら2つの追加QMLファイルはqml実行ファイル内のリソースからロードされます。利用可能な設定は コマンドで一覧できます:Item Window --list-conf

$ qml --list-conf
Built-in configurations:
  default
  resizeToItem

default コンフィギュレーションはデフォルトの動作を提供します: ルートアイテムは起動時にラッパーウィンドウを満たすようにリサイズされ、ユーザがウィンドウのサイズを変更したときにもリサイズされます。代替のresizeToItem コンフィギュレーションは、その逆で動作します: アイテムは、それ自身のサイズをプログラムで設定することができ(例えば、それ自身のwidthheight プロパティへのバインディングを作成することにより)、ラッパー・ウィンドウは、(ウィンドウ・システムによって課される制限に従って)フィットするようにリサイズされます。-c または--config オプションを使って、これらのいずれかを選択することができます:

$ qml -c resizeToItem selfResizingItem.qml

QStandardPaths::AppConfigLocation configuration.qml という名前のコンフィギュレーション・ファイルと、 アイテム・ラッパーを宣言するQMLファイルです。 オプションを指定すると、これらのコンフィギュレーションへの完全なパスと、検索された追加 の場所が表示されます:qml --list-conf --verbose

$ qml --list-conf --verbose
Built-in configurations:
  default
  resizeToItem
Other configurations:
  /home/myuser/.config/QtProject/Qml Runtime/simplest
Checked in:
  /home/myuser/.config/QtProject/Qml Runtime
  /etc/xdg/QtProject/Qml Runtime

以下は、configuration.qml ファイルの例である:

import QmlRuntime.Config

Configuration {
    PartialScene {
        itemType: "QQuickItem"
        container: Qt.resolvedUrl("ItemWrapper.qml")
    }
}

そして、container プロパティが指し示すことのできる、最も単純なItemWrapper.qml

import QtQuick

Window {
    required property Item containedObject: null
    onContainedObjectChanged: {
        if (containedObject == undefined || containedObject == null) {
            visible = false;
        } else {
            containedObject.parent = contentItem;
            visible = true;
        }
    }
}

これらのファイルが作成されたら、qml -c オプションを使って、configuration.qml ファイルを含むディレクトリの名前を指定することができます。 ファイルは、コンテナ・オブジェクトへのパスを指定します:

$ qml -c simplest mycomponent.qml

qml ランタイムはcontainedObject プロパティを直接設定します。このプロパティはその名前を持つ必要があります。 プロパティが設定されると、ItemWindow にリペアレントされ、表示されます。このWindowはQMLで宣言されているため、独自のラッパーウィンドウを作成する際には、カスタマイズした方法でリサイズを処理したり、プロトタイピング中に便利だと思われる機能を追加したりと、好きな機能を自由に追加することができます。

AppConfigLocation に何が書かれているかに関わらず、qml -c オプションを使って、configuration.qml ファイルへの完全なパスを指定することもできます。

コンフィギュレーション・ファイルで宣言できる機能に加えて、qml ツールは、コマンドライン・オプションでさらにいくつかの機能を提供する。最新のリストを入手するには、--help オプションを使用する。

© 2025 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.