QML Runtime ツールを使用したプロトタイピング
qml ユーティリティは、主にQMLアプリケーションやコンポーネントのテストを目的としています。本番環境でQMLアプリケーションを起動するには、多くの場合、カスタムC++アプリケーションを開発するか、QMLファイルをモジュールにバンドルする必要があります。詳細については、「QMLアプリケーションのデプロイ」を参照してください。
qml Window は、表示する内容がない場合でも、指定されたQML型をそのままインスタンス化できます。 以外のルートオブジェクトでQMLコンテンツを表示する場合、 はこのコンテンツを でラップします。qml Window
したがって、qml で開発したプロトタイプからC++アプリケーションへ移行する際は、ルート要素がWindow であることを確認するか、C++でQQuickView を作成してルートItem を格納する必要があります。ただし、その間も、qml ツールを使用して、プロトタイプの一部を個別に読み込んでテストすることは可能です。
.qml ファイルをロードするには、コマンドプロンプトでファイルパスを指定します:
$ qml myqmlfile.qml設定オプションを確認するには、--help 引数を指定してqml を実行してください。
読み込むQMLファイルのルートオブジェクトがWindowではなくItemである場合、表示するにはそれをWindow でラップする必要があります。この処理が未実装の間、すでに読み込まれている最上位オブジェクトはPartialScene オブジェクトとして表現されます。 その後、qml ツールは、次の処理を決定するために追加のQMLファイルをロードします。そのうちの1つは、PartialScene をどのようなコンテナでラップするかを指定する設定ファイルです。PartialScene.container プロパティは、コンテナコンポーネントのQMLソースコードを指すURLを指定します。通常、このコンポーネントでは、最初にロードされたItem をラップするためのWindow を宣言する必要があります。 したがって、ItemをWindowでラップするプロセスはプログラムで制御可能です。また、デフォルトでは、これら2つの追加のQMLファイルは、qml実行ファイル内のリソースから読み込まれます。利用可能な設定の一覧は、--list-conf コマンドで確認できます:
$ qml --list-conf
Built-in configurations:
default
resizeToItemdefault 設定はデフォルトの動作を提供します。起動時、およびユーザーがウィンドウのサイズを変更した際に、ルートItemのサイズがラップするWindowに収まるように調整されます。 対照的に、resizeToItem 設定では逆の動作になります。つまり、Itemはプログラムによって自身のサイズを設定でき(例えば、自身のwidth およびheight プロパティへのバインディングを作成するなど)、ラッパーウィンドウはそのサイズに合わせてリサイズされます(ウィンドウシステムによって課される制限に従う)。-c または--config オプションを使用して、これらいずれかを選択できます:
$ qml -c resizeToItem selfResizingItem.qml追加の設定は、QStandardPaths::AppConfigLocation に設定ディレクトリを作成することで追加できます。各ディレクトリには、configuration.qml という名前の設定ファイルと、Item ラッパーを宣言する QML ファイル(名前は任意)の 2 つの 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;
}
}
}これらのファイルが作成されたら、コンテナオブジェクトへのパスを指定する `configuration.qml ` ファイルが含まれるディレクトリ名を指定して、qml -c オプションを使用できます:
$ qml -c simplest mycomponent.qmlqml ランタイムは、containedObject プロパティを直接設定します。このプロパティにはその名前が必須であり、設定されると、Item はWindow を親として再設定され、表示されます。 このウィンドウはQMLで宣言されているため、独自のラッパーウィンドウを作成する際には、サイズ変更を独自の方法で処理したり、プロトタイピング中に役立つと思われる機能を追加したりするなど、任意の追加機能を自由に実装することができます。
AppConfigLocation で検出された内容にかかわらず、代わりにqml -c オプションを使用してconfiguration.qml ファイルへの完全なパスを指定することも可能です。また、そのファイル内でコンテナオブジェクトへの完全なパスを指定することもできるため、これらのファイルは任意の場所に配置できます。
設定ファイルで宣言できる機能に加え、qml ツールはコマンドラインオプションを通じてさらにいくつかの機能を提供しています。最新のリストを確認するには、--help オプションを使用してください。
© 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.