C
Qt Quick Ultralite Motorcycle Cluster Demo
Demonstrates integrating QML and C++, and handling multiple variants of the same design.
Overview
The application demonstrates a Motorcycle Instrument Cluster supporting two different screen configurations: 800x480px and 720x1200px. It's possible to switch between configurations using the SIZE_VARIANT cmake variable.
For example:
cmake .. -DSIZE_VARIANT=small
Setting this variable to small will produce binaries supporting a resolution of 800x480px. Setting it to big will produce binaries supporting a resolution of 720x1200px.
If a platform has enough storage, the application can have a start-up animation with image sequences. The intro variant enables the animation, so its .qmlproject file lists the image files for the animation. This variant is available for the small variant on STM32F769i-discovery and on the desktop platform. Refer to Resource properties and Resource properties for sprite animation sections which explains how to manage resource for image sequences.
Since Qt Quick Ultralite 2.7, this demo uses screen rotation to rotate the application for the NXP MIMXRT1170 platform. To enable this feature, this platform has its own top-level .qmlproject file.
The demo shows how to connect a C++ simulation backend to the QML user interface.
The application contains:
- start-up animation (only in 
introvariant) - welcome animation
 - driving cycle
 - day mode
 - navigation with keyboard
 - warnings
 - goodbye animation
 
Target platforms
- MIMXRT1170 (rotated 
bigvariant) - RH850-D1M1A (
smallvariant) - STM32F769i-discovery (
smallandintrovariant) - Infineon TRAVEO T2G (
smallvariant) 
Screenshots
Start-up animation
Night Mode

Day Mode

Keyboard

Files:
- motor_cluster/CMakeLists.txt
 - motor_cluster/imports/MotorCluster/qmldir
 - motor_cluster/qmlproject/+big/+intro/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+big/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/+ek-ra6m3g/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/+qt/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/+rh850/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/+stm32f769/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/+traveo-t2g-cyt4en/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/+traveo-t2g/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/+small/motor_cluster_module.qmlproject
 - motor_cluster/qmlproject/motor_cluster.qmlproject
 - motor_cluster/qmlproject/motor_cluster_rotated.qmlproject
 - motor_cluster/qmls/+big/+intro/Logo.qml
 - motor_cluster/qmls/+big/Logo.qml
 - motor_cluster/qmls/+big/MotorCluster.qml
 - motor_cluster/qmls/+big/RangeIconWithText.qml
 - motor_cluster/qmls/+big/SpeedoView.qml
 - motor_cluster/qmls/+big/Statistics.qml
 - motor_cluster/qmls/+big/Warning.qml
 - motor_cluster/qmls/+small/+intro/Logo.qml
 - motor_cluster/qmls/+small/Logo.qml
 - motor_cluster/qmls/+small/MotorCluster.qml
 - motor_cluster/qmls/+small/RangeIconWithText.qml
 - motor_cluster/qmls/+small/SpeedoView.qml
 - motor_cluster/qmls/+small/Statistics.qml
 - motor_cluster/qmls/+small/Warning.qml
 - motor_cluster/qmls/Background.qml
 - motor_cluster/qmls/Blinker.qml
 - motor_cluster/qmls/MainModel.qml
 - motor_cluster/qmls/RoadView.qml
 - motor_cluster/qmls/Style.qml
 - motor_cluster/qmls/animation/+intro/+15fps/StartupAnimationConfig.qml
 - motor_cluster/qmls/animation/+intro/StartupAnimation.qml
 - motor_cluster/qmls/animation/+intro/StartupAnimationConfig.qml
 - motor_cluster/qmls/animation/StartupAnimation.qml
 - motor_cluster/qmls/bottomElements/+big/BottomCommonElements.qml
 - motor_cluster/qmls/bottomElements/+big/OdoTextElement.qml
 - motor_cluster/qmls/bottomElements/+big/TextElement.qml
 - motor_cluster/qmls/bottomElements/+big/TimeView.qml
 - motor_cluster/qmls/bottomElements/BottomCommonElements.qml
 - motor_cluster/qmls/bottomElements/OdoTextElement.qml
 - motor_cluster/qmls/bottomElements/TextElement.qml
 - motor_cluster/qmls/bottomElements/TimeView.qml
 - motor_cluster/qmls/gauges/+big/FuelGaugeView.qml
 - motor_cluster/qmls/gauges/+big/GearGaugeView.qml
 - motor_cluster/qmls/gauges/+small/FuelGaugeView.qml
 - motor_cluster/qmls/gauges/+small/GearGaugeView.qml
 - motor_cluster/qmls/gauges/StartupConfig.qml
 - motor_cluster/qmls/keyboard/+big/InputTextField.qml
 - motor_cluster/qmls/keyboard/+big/KeyBase.qml
 - motor_cluster/qmls/keyboard/+big/Keyboard.qml
 - motor_cluster/qmls/keyboard/+big/KeyboardView.qml
 - motor_cluster/qmls/keyboard/InputTextField.qml
 - motor_cluster/qmls/keyboard/KeyBase.qml
 - motor_cluster/qmls/keyboard/KeyFont20.qml
 - motor_cluster/qmls/keyboard/KeyFont36.qml
 - motor_cluster/qmls/keyboard/KeyWithImage.qml
 - motor_cluster/qmls/keyboard/Keyboard.qml
 - motor_cluster/qmls/keyboard/KeyboardView.qml
 - motor_cluster/qmls/main/+big/motor_cluster.qml
 - motor_cluster/qmls/main/+small/motor_cluster.qml
 - motor_cluster/qmls/navigation/+big/Navigation.qml
 - motor_cluster/qmls/navigation/Arrow.qml
 - motor_cluster/qmls/navigation/Navigation.qml
 - motor_cluster/qmls/navigation/NavigationModel.qml
 - motor_cluster/qmls/performance/empty/PerformanceMetrics.qml
 - motor_cluster/qmls/performance/full/PerformanceMetricItem.qml
 - motor_cluster/qmls/performance/full/PerformanceMetrics.qml
 - motor_cluster/qmls/tacho/+big/NumberedScaleView.qml
 - motor_cluster/qmls/tacho/+big/TachoView.qml
 - motor_cluster/qmls/tacho/NumberedScaleView.qml
 - motor_cluster/qmls/tacho/TachoView.qml
 - motor_cluster/qmls/telltales/+big/TellTalesView.qml
 - motor_cluster/qmls/telltales/TellTalesIndicator.qml
 - motor_cluster/qmls/telltales/TellTalesModel.qml
 - motor_cluster/qmls/telltales/TellTalesView.qml
 - motor_cluster/qmls/utils/ClipingItem.qml
 - motor_cluster/qmls/utils/ItemWithAcivationAnimations.qml
 - motor_cluster/qmls/utils/MathAPI.qml
 - motor_cluster/qmls/utils/TextInRoundedBox.qml
 - motor_cluster/src/mathutils.h
 - motor_cluster/src/simulation/drivetrain.cpp
 - motor_cluster/src/simulation/drivetrain.h
 - motor_cluster/src/simulation/normaldrivestate.cpp
 - motor_cluster/src/simulation/normaldrivestate.h
 - motor_cluster/src/simulation/simulationcontroller.cpp
 - motor_cluster/src/simulation/simulationcontroller.h
 - motor_cluster/src/simulation/smfwd.h
 - motor_cluster/src/simulation/stateid.h
 - motor_cluster/src/simulation/states.cpp
 - motor_cluster/src/simulation/states.h
 - motor_cluster/src/statemachine.h
 - motor_cluster/src/traveo-t2g/main.cpp
 
Images:
- motor_cluster/images/+big/+intro/qt-logo.png
 - motor_cluster/images/+big/qt-logo.png
 - motor_cluster/images/+big/range.png
 - motor_cluster/images/+big/turn-left.png
 - motor_cluster/images/+small/+intro/qt-logo.png
 - motor_cluster/images/+small/qt-logo.png
 - motor_cluster/images/+small/range.png
 - motor_cluster/images/+small/turn-left.png
 - motor_cluster/images/bg/+big/main-light.png
 - motor_cluster/images/bg/+big/main.png
 - motor_cluster/images/bg/+big/ref.jpg
 - motor_cluster/images/bg/+big/ref_day.png
 - motor_cluster/images/bg/+small/main-light.png
 - motor_cluster/images/bg/+small/main.png
 - motor_cluster/images/bg/+small/ref.jpg
 - motor_cluster/images/bg/+small/ref_day.png
 - motor_cluster/images/fuelGauge/+big/fuel-colored-bg.png
 - motor_cluster/images/fuelGauge/+big/fuel-colored-circle-day.png
 - motor_cluster/images/fuelGauge/+big/fuel-colored-circle.png
 - motor_cluster/images/fuelGauge/+big/fuel-scale.png
 - motor_cluster/images/fuelGauge/+big/hole-in-bg-day.png
 - motor_cluster/images/fuelGauge/+big/hole-in-bg.png
 - motor_cluster/images/fuelGauge/+big/ring-2.png
 - motor_cluster/images/fuelGauge/+big/wave-bottom-part.png
 - motor_cluster/images/fuelGauge/+big/wave-shadow.png
 - motor_cluster/images/fuelGauge/+big/wave-top-part.png
 - motor_cluster/images/fuelGauge/+small/fuel-colored-bg.png
 - motor_cluster/images/fuelGauge/+small/fuel-colored-circle-day.png
 - motor_cluster/images/fuelGauge/+small/fuel-colored-circle.png
 - motor_cluster/images/fuelGauge/+small/fuel-scale.png
 - motor_cluster/images/fuelGauge/+small/hole-in-bg-day.png
 - motor_cluster/images/fuelGauge/+small/hole-in-bg.png
 - motor_cluster/images/fuelGauge/+small/ring-2.png
 - motor_cluster/images/fuelGauge/+small/wave-bottom-part.png
 - motor_cluster/images/fuelGauge/+small/wave-shadow.png
 - motor_cluster/images/fuelGauge/+small/wave-top-part.png
 - motor_cluster/images/keyboard/+big/backspace-key.png
 - motor_cluster/images/keyboard/+big/enter-key.png
 - motor_cluster/images/keyboard/+big/go-home-key.png
 - motor_cluster/images/keyboard/+big/go-work-key.png
 - motor_cluster/images/keyboard/+big/minimize-keyboard.png
 - motor_cluster/images/keyboard/backspace-key.png
 - motor_cluster/images/keyboard/enter-key.png
 - motor_cluster/images/keyboard/go-home-key.png
 - motor_cluster/images/keyboard/go-work-key.png
 - motor_cluster/images/keyboard/minimize-keyboard.png
 - motor_cluster/images/loading/+big/0001.png
 - motor_cluster/images/loading/+big/0002.png
 - motor_cluster/images/loading/+big/0003.png
 - motor_cluster/images/loading/+big/0004.png
 - motor_cluster/images/loading/+big/0005.png
 - motor_cluster/images/loading/+big/0006.png
 - motor_cluster/images/loading/+big/0007.png
 - motor_cluster/images/loading/+big/0008.png
 - motor_cluster/images/loading/+big/0009.png
 - motor_cluster/images/loading/+big/0010.png
 - motor_cluster/images/loading/+big/0011.png
 - motor_cluster/images/loading/+big/0012.png
 - motor_cluster/images/loading/+big/0013.png
 - motor_cluster/images/loading/+big/0014.png
 - motor_cluster/images/loading/+big/0015.png
 - motor_cluster/images/loading/+big/0016.png
 - motor_cluster/images/loading/+big/0017.png
 - motor_cluster/images/loading/+big/0018.png
 - motor_cluster/images/loading/+big/0019.png
 - motor_cluster/images/loading/+big/0020.png
 - motor_cluster/images/loading/+big/0021.png
 - motor_cluster/images/loading/+big/0022.png
 - motor_cluster/images/loading/+big/0023.png
 - motor_cluster/images/loading/+big/0024.png
 - motor_cluster/images/loading/+big/0025.png
 - motor_cluster/images/loading/+big/0026.png
 - motor_cluster/images/loading/+big/0027.png
 - motor_cluster/images/loading/+big/0028.png
 - motor_cluster/images/loading/+big/0029.png
 - motor_cluster/images/loading/+big/0030.png
 - motor_cluster/images/loading/+big/0031.png
 - motor_cluster/images/loading/+big/0032.png
 - motor_cluster/images/loading/+big/0033.png
 - motor_cluster/images/loading/+big/0034.png
 - motor_cluster/images/loading/+big/0035.png
 - motor_cluster/images/loading/+big/0036.png
 - motor_cluster/images/loading/+big/0037.png
 - motor_cluster/images/loading/+big/0038.png
 - motor_cluster/images/loading/+big/0039.png
 - motor_cluster/images/loading/+big/0040.png
 - motor_cluster/images/loading/+big/0041.png
 - motor_cluster/images/loading/+big/0042.png
 - motor_cluster/images/loading/+big/0043.png
 - motor_cluster/images/loading/+big/0044.png
 - motor_cluster/images/loading/+big/0045.png
 - motor_cluster/images/loading/+big/0046.png
 - motor_cluster/images/loading/+big/0047.png
 - motor_cluster/images/loading/+big/0048.png
 - motor_cluster/images/loading/+big/0049.png
 - motor_cluster/images/loading/+big/0050.png
 - motor_cluster/images/loading/+big/0051.png
 - motor_cluster/images/loading/+big/0052.png
 - motor_cluster/images/loading/+big/0053.png
 - motor_cluster/images/loading/+big/0054.png
 - motor_cluster/images/loading/+big/0055.png
 - motor_cluster/images/loading/+big/0056.png
 - motor_cluster/images/loading/+big/0057.png
 - motor_cluster/images/loading/+big/0058.png
 - motor_cluster/images/loading/+big/0059.png
 - motor_cluster/images/loading/+big/0060.png
 - motor_cluster/images/loading/+big/0061.png
 - motor_cluster/images/loading/+big/0062.png
 - motor_cluster/images/loading/+big/0063.png
 - motor_cluster/images/loading/+big/0064.png
 - motor_cluster/images/loading/+big/0065.png
 - motor_cluster/images/loading/+big/0066.png
 - motor_cluster/images/loading/+big/0067.png
 - motor_cluster/images/loading/+big/0068.png
 - motor_cluster/images/loading/+big/0069.png
 - motor_cluster/images/loading/+big/0070.png
 - motor_cluster/images/loading/+big/0071.png
 - motor_cluster/images/loading/+big/0072.png
 - motor_cluster/images/loading/+big/0073.png
 - motor_cluster/images/loading/+big/0074.png
 - motor_cluster/images/loading/+big/0075.png
 - motor_cluster/images/loading/+big/0076.png
 - motor_cluster/images/loading/+big/0077.png
 - motor_cluster/images/loading/+big/0078.png
 - motor_cluster/images/loading/+big/0079.png
 - motor_cluster/images/loading/+big/0080.png
 - motor_cluster/images/loading/+big/0081.png
 - motor_cluster/images/loading/+big/0082.png
 - motor_cluster/images/loading/+big/0083.png
 - motor_cluster/images/loading/+big/0084.png
 - motor_cluster/images/loading/+big/0085.png
 - motor_cluster/images/loading/+big/0086.png
 - motor_cluster/images/loading/+big/0087.png
 - motor_cluster/images/loading/+big/0088.png
 - motor_cluster/images/loading/+big/0089.png
 - motor_cluster/images/loading/0001.png
 - motor_cluster/images/loading/0002.png
 - motor_cluster/images/loading/0003.png
 - motor_cluster/images/loading/0004.png
 - motor_cluster/images/loading/0005.png
 - motor_cluster/images/loading/0006.png
 - motor_cluster/images/loading/0007.png
 - motor_cluster/images/loading/0008.png
 - motor_cluster/images/loading/0009.png
 - motor_cluster/images/loading/0010.png
 - motor_cluster/images/loading/0011.png
 - motor_cluster/images/loading/0012.png
 - motor_cluster/images/loading/0013.png
 - motor_cluster/images/loading/0014.png
 - motor_cluster/images/loading/0015.png
 - motor_cluster/images/loading/0016.png
 - motor_cluster/images/loading/0017.png
 - motor_cluster/images/loading/0018.png
 - motor_cluster/images/loading/0019.png
 - motor_cluster/images/loading/0020.png
 - motor_cluster/images/loading/0021.png
 - motor_cluster/images/loading/0022.png
 - motor_cluster/images/loading/0023.png
 - motor_cluster/images/loading/0024.png
 - motor_cluster/images/loading/0025.png
 - motor_cluster/images/loading/0026.png
 - motor_cluster/images/loading/0027.png
 - motor_cluster/images/loading/0028.png
 - motor_cluster/images/loading/0029.png
 - motor_cluster/images/loading/0030.png
 - motor_cluster/images/loading/0031.png
 - motor_cluster/images/loading/0032.png
 - motor_cluster/images/loading/0033.png
 - motor_cluster/images/loading/0034.png
 - motor_cluster/images/loading/0035.png
 - motor_cluster/images/loading/0036.png
 - motor_cluster/images/loading/0037.png
 - motor_cluster/images/loading/0038.png
 - motor_cluster/images/loading/0039.png
 - motor_cluster/images/loading/0040.png
 - motor_cluster/images/loading/0041.png
 - motor_cluster/images/loading/0042.png
 - motor_cluster/images/loading/0043.png
 - motor_cluster/images/loading/0044.png
 - motor_cluster/images/loading/0045.png
 - motor_cluster/images/loading/0046.png
 - motor_cluster/images/loading/0047.png
 - motor_cluster/images/loading/0048.png
 - motor_cluster/images/loading/0049.png
 - motor_cluster/images/loading/0050.png
 - motor_cluster/images/loading/0051.png
 - motor_cluster/images/loading/0052.png
 - motor_cluster/images/loading/0053.png
 - motor_cluster/images/loading/0054.png
 - motor_cluster/images/loading/0055.png
 - motor_cluster/images/loading/0056.png
 - motor_cluster/images/loading/0057.png
 - motor_cluster/images/loading/0058.png
 - motor_cluster/images/loading/0059.png
 - motor_cluster/images/loading/0060.png
 - motor_cluster/images/loading/0061.png
 - motor_cluster/images/loading/0062.png
 - motor_cluster/images/loading/0063.png
 - motor_cluster/images/loading/0064.png
 - motor_cluster/images/loading/0065.png
 - motor_cluster/images/loading/0066.png
 - motor_cluster/images/loading/0067.png
 - motor_cluster/images/loading/0068.png
 - motor_cluster/images/loading/0069.png
 - motor_cluster/images/loading/0070.png
 - motor_cluster/images/loading/0071.png
 - motor_cluster/images/loading/0072.png
 - motor_cluster/images/loading/0073.png
 - motor_cluster/images/loading/0074.png
 - motor_cluster/images/loading/0075.png
 - motor_cluster/images/loading/0076.png
 - motor_cluster/images/loading/0077.png
 - motor_cluster/images/loading/0078.png
 - motor_cluster/images/loading/0079.png
 - motor_cluster/images/loading/0080.png
 - motor_cluster/images/loading/0081.png
 - motor_cluster/images/loading/0082.png
 - motor_cluster/images/loading/0083.png
 - motor_cluster/images/loading/0084.png
 - motor_cluster/images/loading/0085.png
 - motor_cluster/images/loading/0086.png
 - motor_cluster/images/loading/0087.png
 - motor_cluster/images/loading/0088.png
 - motor_cluster/images/loading/0089.png
 - motor_cluster/images/mainScreen/+big/left-lines-day.png
 - motor_cluster/images/mainScreen/+big/left-lines.png
 - motor_cluster/images/mainScreen/+big/right-lines-day.png
 - motor_cluster/images/mainScreen/+big/right-lines.png
 - motor_cluster/images/mainScreen/+big/road-day.png
 - motor_cluster/images/mainScreen/+big/road.png
 - motor_cluster/images/mainScreen/+big/tacho-bottom-line-day.png
 - motor_cluster/images/mainScreen/+big/tacho-bottom-line.png
 - motor_cluster/images/mainScreen/+big/tacho-top-line-day.png
 - motor_cluster/images/mainScreen/+big/tacho-top-line.png
 - motor_cluster/images/mainScreen/left-lines-day.png
 - motor_cluster/images/mainScreen/left-lines.png
 - motor_cluster/images/mainScreen/right-lines-day.png
 - motor_cluster/images/mainScreen/right-lines.png
 - motor_cluster/images/mainScreen/road-day.png
 - motor_cluster/images/mainScreen/road.png
 - motor_cluster/images/mainScreen/tacho-bottom-line-day.png
 - motor_cluster/images/mainScreen/tacho-bottom-line.png
 - motor_cluster/images/mainScreen/tacho-top-line-day.png
 - motor_cluster/images/mainScreen/tacho-top-line.png
 - motor_cluster/images/navigation/+big/destination-pin.png
 - motor_cluster/images/navigation/+big/tbt-1-arrow-left.png
 - motor_cluster/images/navigation/+big/tbt-1-arrow-stright.png
 - motor_cluster/images/navigation/+big/tbt-center-separator.png
 - motor_cluster/images/navigation/destination-pin.png
 - motor_cluster/images/navigation/tbt-1-arrow-left.png
 - motor_cluster/images/navigation/tbt-1-arrow-stright.png
 - motor_cluster/images/navigation/tbt-center-separator.png
 - motor_cluster/images/status/+big/battery-status.png
 - motor_cluster/images/status/+big/distance-status.png
 - motor_cluster/images/status/+big/engine-oil-status.png
 - motor_cluster/images/status/+big/fuel-avg-status.png
 - motor_cluster/images/status/+big/service-status.png
 - motor_cluster/images/status/+big/time-status.png
 - motor_cluster/images/status/battery-status.png
 - motor_cluster/images/status/distance-status.png
 - motor_cluster/images/status/engine-oil-status.png
 - motor_cluster/images/status/fuel-avg-status.png
 - motor_cluster/images/status/service-status.png
 - motor_cluster/images/status/time-status.png
 - motor_cluster/images/tacho/+big/1.png
 - motor_cluster/images/tacho/+big/2.png
 - motor_cluster/images/tacho/+big/3.png
 - motor_cluster/images/tacho/+big/4.png
 - motor_cluster/images/tacho/+big/5.png
 - motor_cluster/images/tacho/+big/6.png
 - motor_cluster/images/tacho/+small/1.png
 - motor_cluster/images/tacho/+small/2.png
 - motor_cluster/images/tacho/+small/3.png
 - motor_cluster/images/tacho/+small/4.png
 - motor_cluster/images/tacho/+small/5.png
 - motor_cluster/images/tacho/+small/6.png
 - motor_cluster/images/tacho/light/+big/01.png
 - motor_cluster/images/tacho/light/+big/02.png
 - motor_cluster/images/tacho/light/+big/03.png
 - motor_cluster/images/tacho/light/+big/04.png
 - motor_cluster/images/tacho/light/+big/05.png
 - motor_cluster/images/tacho/light/+big/06.png
 - motor_cluster/images/tacho/light/01.png
 - motor_cluster/images/tacho/light/02.png
 - motor_cluster/images/tacho/light/03.png
 - motor_cluster/images/tacho/light/04.png
 - motor_cluster/images/tacho/light/05.png
 - motor_cluster/images/tacho/light/06.png
 - motor_cluster/images/telltales/+big/battery.png
 - motor_cluster/images/telltales/+big/engine-failure.png
 - motor_cluster/images/telltales/+big/engine-oil.png
 - motor_cluster/images/telltales/+big/fuel.png
 - motor_cluster/images/telltales/+big/high-beams.png
 - motor_cluster/images/telltales/+small/battery.png
 - motor_cluster/images/telltales/+small/engine-failure.png
 - motor_cluster/images/telltales/+small/engine-oil.png
 - motor_cluster/images/telltales/+small/fuel.png
 - motor_cluster/images/telltales/+small/high-beams.png
 - motor_cluster/images/warnings/+big/battery-warning.png
 - motor_cluster/images/warnings/+big/engine-failure-warning.png
 - motor_cluster/images/warnings/+big/engine-oil-warning.png
 - motor_cluster/images/warnings/battery-warning.png
 - motor_cluster/images/warnings/engine-failure-warning.png
 - motor_cluster/images/warnings/engine-oil-warning.png
 
Available under certain Qt licenses.
Find out more.