C
Qt Quick Ultralite ウォッチのデモ
ウェアラブルデバイス向けアプリケーションにおける、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 ターゲットとして提供されています。ベンチマークモードを実行するには、benchmark_mode ターゲットのバイナリをビルドしてフラッシュしてください。
メインの `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 オブジェクトを追加してください。このオーバーレイは、30 秒後に `benchmarkTimer ` がトリガーされると表示されます。
QulPerfOverlay {
id: benchmarkResult
anchors.horizontalCenter: parent.horizontalCenter;
anchors.verticalCenter: parent.verticalCenter;
visible: false
}ルート QML ファイル「rootqml/+benchmark/watch.qml 」で、ルートオブジェクトがインスタンス化され、「Component.onCompleted 」シグナルがトリガーされた時点で、記録を開始します。
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.qmlprojectCMake を使用してビルドする場合、これらのセレクタはすでに考慮されており、前述のように通常ターゲットとベンチマークターゲットが生成されます。
ターゲットプラットフォーム
スクリーンショット

ファイル:
- 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
特定のQtライセンスの下で利用可能です。
詳細はこちら。