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 | 录制间隔期间的每秒平均帧数。 |
3 | 最小FPS | 捕获的最小每秒帧数。 |
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对象。这个遮挡物在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 } }
注意:基准模式需要使用 QUL_ENABLE_PERFORMANCE_LOGGING=ON
和 QUL_ENABLE_HARDWARE_PERFORMANCE_LOGGING=ON
编译 Qt Quick Ultralite Core 和平台库。
目标平台
- EK-RA6M3G
- MIMXRT1050
- MIMXRT1060
- MIMXRT1064
- STM32F469i
- STM32F769i
- STM32H750b
屏幕截图
文件
- 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/+normal/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/+normal/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/+normal/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 许可下可用。
了解更多。