Qt Quick コントロール - ウェアラブルデモ
ウェアラブルデバイス向けに設計されたアプリケーションランチャーを実演します。

「ウェアラブルデモ」は、アプリケーションランチャーと、ウェアラブルデバイス向けの小規模でシンプルなサンプルアプリケーションのコレクションで構成されています。
構成
メインの .qml ファイルであるwearable.qml は、ApplicationWindow 、スタックベースのナビゲーションモデル用のStackView 、およびインタラクティブなナビゲーション用のボタンで構成されています。
QQC2.ApplicationWindow {
id: window
...
QQC2.StackView {
id: stackView
...
initialItem: LauncherPage {
onLaunched: (title, page, fallback) => {
var createdPage = Qt.createComponent(page)
if (createdPage.status !== Component.Ready)
createdPage = Qt.createComponent(fallback)
stackView.push(createdPage)
header.title = title
}
}
...
}
DemoMode {
stackView: stackView
}
DemoModeIndicator {
id: demoModeIndicator
visible: WearableSettings.demoMode
y: WearableSettings.demoMode ? header.height + 3 : -height - header.height - 3
anchors.horizontalCenter: parent.horizontalCenter
z: header.z + 1
}
MouseArea {
enabled: WearableSettings.demoMode
anchors.fill: parent
onClicked: {
// Stop demo mode and return to the launcher page.
WearableSettings.demoMode = false
stackView.pop(null)
}
}
}スタイル
このデモでは、デモのリソースに埋め込まれたカスタム「Qt Quick Controls 2」スタイルを使用しています。このカスタムスタイルは、この特定のデモに固有のものであるため、ごく一部のコントロールに対してのみ実装されています。フォントや色など、さまざまなスタイル属性にはシングルトン型が使用されています。
WearableStyle/PageIndicator.qmlWearableStyle/Slider.qmlWearableStyle/Switch.qmlWearableStyle/UIStyle.qml
このスタイルは、main() 内のwearable.cpp で適用されています:
QQuickStyle::setStyle(QStringLiteral("WearableStyle"));組み込みのスタイリングシステムを使用する主な利点は、スタイルの選択がアプリケーションコードに対して完全に透過的であることです。スタイルが適用されたコントロールを含む特定のフォルダをインポートする必要はありません。これにより、アプリケーションは他のスタイルでも実行可能です。
ランチャーページ
アプリケーションランチャーは、LauncherPage.qml 内の円形の `PathView ` を使用して実装されています。各アプリケーションは個別の `.qml` ファイルに格納されており、これらはランチャーページの `ListModel ` に追加されます。一部のアプリケーションでは、QtLocation のようなオプションの依存関係を処理するためのフォールバックオプションが用意されています。
PathView {
id: circularView
signal launched(string title, string page, string fallbackpage)
...
model: ListModel {
ListElement {
title: qsTr("Navigation")
pageIcon: "maps"
page: "NavigationPage.qml"
fallback: "NavigationFallbackPage.qml"
}
...
ListElement {
title: qsTr("Settings")
pageIcon: "settings"
page: "SettingsPage.qml"
fallback: ""
}
}
delegate: QQC2.RoundButton {
...
icon.width: 36
icon.height: 36
icon.source: UIStyle.iconPath(pageIcon)
icon.color: UIStyle.textColor
...
onClicked: {
if (PathView.isCurrentItem)
circularView.launched(title, Qt.resolvedUrl(page), Qt.resolvedUrl(fallback))
else
circularView.currentIndex = index
}
}
...
}アプリケーション
アプリケーションは、ウェアラブルデバイスが通常備えている入力方法や通信手段に基づいて、タッチ入力に対応するように設計されています。
ほとんどのアプリケーションには、ダミーのアプリケーションバックエンドとして機能する独自の JavaScript ファイルがあります。これらは、外部データの取得、操作、変換の方法を示しています。例えば、Weather アプリケーションは、XMLHttpRequest を使用してローカルファイルからデータを読み取ります。これらのファイルは、リモートサーバーからの応答を JSON 形式で保存することで生成されました。このコードは、リモートサーバーからデータを取得するように簡単に変更できます。
ナビゲーション
このアプリケーションは、QtLocationモジュールを使用してオスロ市内のルートを表示します。QtLocationがインストールされていない場合は、地図として静止画像を表示し、ルート情報はJSONファイルに基づいて表示されます。現時点では、アプリケーション内から出発地と目的地を指定することはできませんが、デバイスの機能に応じてこの機能を追加することは可能です。 たとえば、以下のいずれかの方法で必要な情報を収集できます:
- ユーザーからの入力を収集するための追加画面を実装する
- Bluetooth または Wi-Fi 経由で別のデバイス(スマートフォンや PC)と通信する。
天気
このアプリケーションは、気温、日の出・日の入り時刻、気圧などの天気情報を表示します。この情報は、https://openweathermap.org/のRESTAPIを使用して取得されます。 APIの応答はJSON形式であり、アプリケーションではJavaScriptを使用してこれを解析します。また、このアプリケーションは、特定の場所の天気データを取得するための画面を追加することで、カスタマイズすることも可能です。
世界時計
このアプリケーションは、さまざまな都市の世界時計を表示します。現時点では、都市のリストはアプリケーション内にハードコードされていますが、デバイスの入力機能に応じて変更することが可能です。
その他
残りのアプリケーションは、現時点では静的なデータを返すのみですが、それぞれのサービスから取得した応答データを処理するように変更することが可能です。
例の動作確認
サンプルを実行するには、次の手順に従ってください。
- Qt Creator
Welcome モードを開き、Examples からサンプルを選択してください。詳細については、Qt Creator の「チュートリアル:ビルドと実行」を参照してください。
- Qt Extension for Visual Studio Code
Command Palette から `Qt: Open Qt examples ` コマンドを実行し、リストからこの例を選択します。詳細については、Qt Extension for Visual Studio Code の「チュートリアル: ビルドと実行」を参照してください。
© 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.