C
Known Issues or Limitations
The following is a list of known issues in Qt for MCUs 2.5.4. For workarounds or information about the status of these issues, contact Qt Support.
To view all user-reported issues, visit the Qt for MCUs public bug tracker.
Qt Quick Ultralite
- Qt Quick Ultralite is a subset of Qt Quick and as such does not provide all the base and control QML types, which are available on the non-MCU platforms. Refer to Qt Quick Ultralite vs Qt Quick and Differences between Qt Quick Ultralite Controls and Qt Quick Controls for more information.
- The Text type does not properly render unicode sequences that require complex text layout if the Static Font Engine is used. Use Monotype Spark font engine for complex text.
- SequentialAnimation and ParallelAnimation do not start automatically when assigned to a property using the "on" syntax. Explicitly set the running property to
true
to start the animation. - font.pointSize does not respect screen DPI. Recommend using font.pixelSize instead.
- The default state has some limitations. Refer to Default state limitations for more information.
- Binding to the state property of an Item works only if the target state does not use the when condition. You should use one of the two methods to change the state using an expression.
- States where multiple PropertyChanges or AnchorChanges target anchor properties on the same item will not work as expected. Use a single PropertyChanges instead.
- Setting anchors to undefined does not restore previous position and size bindings.
- A RotationAnimation in a transition may apply to non-rotation properties. Use PropertyAnimation::properties instead.
- All delegates in a ListView must have the same size. The size must be explicitly specified and cannot be dynamically changed.
onPropertyChanged
is not supported for grouped properties.- The
scale
,rotation
, andtransformOrigin
properties are only generated if they have bindings. For example, if anitem
'sscale
is not explicitly declared with an initial value, settingitem.scale = 2
results in a compilation error. This can be resolved by adding thescale: 1
binding to the item. - Bindings on color value accessors are not supported.
- Using the clip property on transformed items is not supported.
- Transforms on an item do not apply to the item's children. Individually set transforms on each child instead.
- AnimatedSprite does not offer
finishBehavior
property, and it stays on the final frame when the animation completes. If you want to offer the default behavior like in Qt Quick, use the finished signal and currentFrame property. - The frameDuration property of AnimatedSprite and AnimatedSpriteDirectory does not guarantee the exact duration between each frame. It only means the next frame should be rendered after the given time interval. The platform's workload may affect the time interval.
- Definining enumerations that have the same enumerators is not supported. For more info, see enumeration.
- Qul::ListModel<std::string> will return an empty string. To avoid this issue, wrap the type in a struct as shown in the following example:
struct ModelData { std::string text; }; class MyModel: public Qul::ListModel<ModelData> { ... };
- QML objects defined in C++ and exported by InterfaceFiles.files cannot be used in Loader.
Loader { source: "MyCppType.qml" // ^ error: File MyCppType.qml does not exist. }
To avoid this issue, create a QML file, use the MyCppType there, and use the QML file name as the source.
// MyQmlType.qml Item { // Note: The root item has to be a visual type! MyCppType { // ... } }
Loader { source: "MyQmlType.qml" }
- Component usage.
The 'parent' accessor from the root item in a Component when used with Repeater or ListView will print an error "Referencing component 'parent' from unsupported context".
This does not work:
Component { id: myComp Rectangle { width: parent.width height: parent.height / 2 color: "pink" } } Repeater { model: 1 // Referencing Component via id where the root item uses parent.* accessor delegate: myComp }
The workaround is to use the 'id' of the referenced object instead of the 'parent' accessor.
There are also various other issues when using anchors inside Component. If the generated cpp code does not compile, try writing the same logic without using the problamatic anchor bindings. The underlying issue is known, but not fixed yet in this release.
- Connections.
The standard Qt Quick offers a new QML syntax to define signal handlers as a
function
within a Connections type. Qt Quick Ultralite does not support this feature yet, and it does not warn if you use it.function foo() { console.log("foo called") } MouseArea { id: area anchors.fill: parent } // Accepted in Qt, doesn't work in Qt for MCUs and no error is printed. Connections { target: area function onClicked(mouse) { foo() } }
For more information, refer to Connections.
Qt Creator
- QML debugging is not supported
- QML profiling is not supported
Qt Design Studio
- On-device preview is not supported. To preview the design on your MCU board, use the auto-generated CMake project and compile it using Qt Creator.
Renesas RH850
The following is a list of known issues on the Renesas RH850 hardware.
- Qt Quick Ultralite 2.5.4 does not enter low CPU power mode because
enterSleepMode
is not implemented on this platform. If no frame is rendered and no other tasks are running, Qt Quick Ultralite loops until next frame needs to be rendered or another task needs CPU time.
NXP i.MXRT1170
The following is a list of known issues on the NXP i.MXRT1170 hardware.
- Qt Quick Ultralite 2.5.4 does not enter low CPU power mode. In normal conditions Qt Quick Ultralite enters this mode when it doesn't update application UI or there is no new touch events to process. Low CPU power mode is disabled on this platform because it interferes with debugging and flashing.
- The reference platform port has limitations for hardware layers support.
STM32F469I-DISCOVERY, STM32F769I-DISCOVERY, STM32H750B-DISCOVERY
The following is a list of known issues on STM32F469I-DISCOVERY, STM32F769I-DISCOVERY, and STM32H750B-DISCOVERY hardware.
LTDC FIFO Underrun
error may occur in applications that have a lot of UI elements and heavy animations, causing visual glitches. Apart from simplifying the UI, consider using a different build type for the Qt Quick Ultralite core library. For example,Debug
orRelease
instead ofMinSizeRel
.
Infineon platforms
TRAVEO™ T2G CYT4DN
The following is a list of known issues or limitations on TRAVEO™ T2G CYT4DN hardware.
- HyperFlash™ NOR Flash Memory is not supported on TRAVEO™ T2G CYT4DN in this release, as it requires the TRAVEO™ T2G Cluster Series V2e.2.0 graphics driver, along with version 7.9.0 of the TRAVEO™ T2G Sample Driver Library.
Other
- To work around a GNU Arm Embedded Toolchain bug (https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966), all the object files and libraries are passed to
ld
in a linker group (using--start-group
/--end-group
). Additionally, libraries are passed to linker before application object files, which is opposite to default behavior. - Debugging on target with GNU Arm GDB 10.3-2021.10 could lead to a crash (
internal-error: virtual memory exhausted
). You can avoid the crash by either replacing the-g3
option with-g
inlib/cmake/Qul/toolchain/armgcc.cmake
when using GNU Arm GCC 10, or using GNU Arm GCC 9 as toolchain. - Unicode filename in resource system may cause a build error on Windows. It can be resolved by using the proper version of Ninja and CMake. The bundled tools have been verified to support a unicode filename.
- On Linux, if you have installed
gcc-12
withoutg++-12
, the GCC headers in the include path lead to missing C++ headers ('cstdint' file not found
) when runningqmlinterfacegenerator
. Either removegcc-12
or installg++-12
to resolve this issue.
Available under certain Qt licenses.
Find out more.