QMLランタイムツールによるプロトタイピング
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
オプションを使用する。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。