C
Qt Quick ウルトラライト・ウォッチ・デモ
ウェアラブルデバイス用アプリケーションにおけるQMLとC++の簡単な統合のデモ。
概要
この腕時計の例は、Qt Quick Ultralite を使って作られたウェアラブル・アプリケーションのデモです。QMLと基本的なC++を使用しています。このアプリケーションは、タッチ操作に対応した小型ディスプレイを搭載した機器での使用を想定しています。また、基本的なジェスチャー認識を行い、異なるウォッチシールドを切り替えることができます。
ベンチマーク・モード
ベンチマーク・モードでは、アプリケーションはあらかじめ定義された30秒間実行され、30秒のインターバルが終了した時点でパフォーマンス・メトリクスが画面に表示されます。Qt Quick Ultralite Core ライブラリがQUL_ENABLE_PERFORMANCE_CONSOLE_OUTPUT=ON でビルドされている場合、同じ結果がシリアル・コンソールにも表示されます。
以下のパフォーマンス・メトリクスがテスト終了時に表示されます:
| パラメータ | パラメータ | |
|---|---|---|
| 1 | 合計フレーム数 | 記録間隔内の総フレーム数。 |
| 2 | 平均FPS | 記録インターバル中に測定された1秒あたりの平均フレーム数。 |
| 3 | 最小FPS | 録画中にキャプチャされた1秒あたりの最小フレーム数。 |
| 4 | 最大ヒープ使用量 | アプリケーションが起動してから記録された最大ヒープ使用量(バイト)。 |
| 5 | 最大スタック使用量 | アプリケーション起動時から記録されている最大スタック使用量(バイト)。 |
| 6 | 平均CPU負荷 | 記録間隔を平均したパーセント値での CPU 負荷。 |
ベンチマークモードは、watch_benchmark という名前の独立した CMake ターゲットとして提供されます。ベンチマークモードを実行するには、ベンチマークモードターゲットバイナリをビルドしてフラッシュします。
メインのqmlproject ファイルには、以下に示すようにbenchmark_module.qmlproject ファイルが含まれています:
ModuleFiles {
files: [
"mode/benchmark_module.qmlproject"
]
}ルートQMLファイルに以下のモジュールをインポートしてください。
import QtQuickUltralite.Extras 2.0 import Benchmark 1.0 import QtQuickUltralite.Profiling
- Qt Quick Ultralite ExtrasモジュールはQulPerf オブジェクトを提供し、計測の開始と停止を可能にします。
Benchmarkモジュールはbenchmark_module.qmlprojectファイルから提供されます。フリック操作のためのタッチジェスチャーをシミュレートするメソッドを提供します。- Qt Quick Ultralite Profilingモジュールは、アプリケーション・ユーザー・インターフェースの上にパフォーマ ンス・メトリクスを表示するためのスクリーン・オーバーレイQulPerfOverlay を提供します。
ルートqmlにベンチマーク結果用のQulPerfOverlay QMLオブジェクトを追加します。このオーバーレイは、benchmarkTimer が 30 秒後にトリガーされると表示されるようになります。
QulPerfOverlay {
id: benchmarkResult
anchors.horizontalCenter: parent.horizontalCenter;
anchors.verticalCenter: parent.verticalCenter;
visible: false
}ルートオブジェクトがインスタンス化され、Component.onCompleted シグナルがトリガーされると、ルート QML ファイルrootqml/+benchmark/watch.qml で録画を開始します。
Component.onCompleted: {
QulPerf.recording = true
}アプリケーションは30秒間実行されます。30秒後に録画が停止し、ベンチマーク結果画面のオーバーレイが表示されます。
Timer {
id: benchmarkTimer
interval: 30000
running: true
repeat: false
onTriggered: {
QulPerf.recording = false;
benchmarkResult.visible = true
}
}注: ベンチマーク・モードでは、Qt Quick Ultralite Core および Platform ライブラリが、QUL_ENABLE_PERFORMANCE_LOGGING=ON およびQUL_ENABLE_HARDWARE_PERFORMANCE_LOGGING=ON でビルドされている必要があります。
ファイルバリアント
ウォッチデモには、ベンチマークモード用とデスクトッププラットフォーム用のファイルバリアントとセレクタが含まれています。ベンチマーク・モード用のソースをエクスポートするには、"benchmark" ファイル・セレクタを適用します。デスクトップ・プラットフォーム用にソースをエクスポートするには、"desktop" ファイル・セレクタを使用します。
qmlprojectexporter --selector benchmark,desktop demos/watch/qmlproject/mcu_watch.qmlproject
CMakeでビルドする場合、セレクタはすでに考慮され、上記のように通常のターゲットとベンチマークターゲットが作成されます。
ターゲットプラットフォーム
スクリーンショット

ファイル
- watch/ApplicationList.qml
- watch/CMakeLists.txt
- watch/CompassWidget.qml
- watch/GradientShape.qml
- watch/HealthWidget.qml
- watch/WatchShield.qml
- watch/WeatherWidget.qml
- watch/WidgetsRow.qml
- watch/imports/Watch/+benchmark/MainModel.qml
- watch/imports/Watch/+desktop/Theme.qml
- watch/imports/Watch/MainModel.qml
- watch/imports/Watch/Theme.qml
- watch/imports/Watch/qmldir
- watch/inc/HealthModel.h
- watch/inc/WatchModel.h
- watch/mode/+benchmark/benchmark_module.qmlproject
- watch/mode/+benchmark/simulation/flickControl.cpp
- watch/mode/+benchmark/simulation/flickControl.h
- watch/mode/benchmark_module.qmlproject
- watch/qmlproject/mcu_watch-stm32h750b-discovery.qmlproject
- watch/qmlproject/mcu_watch.qmlproject
- watch/qmlproject/watch_model.qmlproject
- watch/rootqml/+benchmark/watch.qml
- watch/rootqml/watch.qml
- watch/src/HealthModel.cpp
- watch/src/WatchModel.cpp
画像
- watch/images/compass/E.png
- watch/images/compass/N.png
- watch/images/compass/S.png
- watch/images/compass/W.png
- watch/images/compass/arrows.png
- watch/images/compass/middleback.png
- watch/images/compass/ring1.png
- watch/images/compass/ring2.png
- watch/images/health/graph-point.png
- watch/images/health/graph.png
- watch/images/health/heart.png
- watch/images/health/horizontal-line.png
- watch/images/health/vertical-line.png
- watch/images/list/compass-big.png
- watch/images/list/compass.png
- watch/images/list/settings-big.png
- watch/images/list/settings.png
- watch/images/list/sport-app-big.png
- watch/images/list/sport-app.png
- watch/images/list/tools-big.png
- watch/images/list/tools.png
- watch/images/list/your-health-big.png
- watch/images/list/your-health.png
- watch/images/shield/battery-icon.png
- watch/images/shield/dots-all.png
- watch/images/shield/hand-hour.png
- watch/images/shield/hand-minute.png
- watch/images/shield/hand-second.png
- watch/images/shield/hands-middle-dot.png
- watch/images/shield/heart.png
- watch/images/shield/small-oval-alt.png
- watch/images/shield/steps-icon.png
- watch/images/weather/big-sun.png
- watch/images/weather/ion-ios-partlysunny-outline.png
- watch/images/weather/ion-ios-rainy-outline.png
- watch/images/weather/ion-ios-sunny-outline.png
- watch/images/weather/w-bottom-mask.png
- watch/images/weather/w-vertical.png