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
コンフィギュレーションは、その逆で動作します: アイテムは、それ自身のサイズをプログラムで設定することができ(例えば、それ自身のwidth
とheight
プロパティへのバインディングを作成することにより)、ラッパー・ウィンドウは、(ウィンドウ・システムによって課される制限に従って)フィットするようにリサイズされます。-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
プロパティを直接設定します。このプロパティはその名前を持つ必要があります。 プロパティが設定されると、Item はWindow にリペアレントされ、表示されます。この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.