C

Known Issues or Limitations

The following is a list of known issues in Qt for MCUs 2.5. 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.
  • 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, and transformOrigin properties are only generated if they have bindings. For example, if an item's scale is not explicitly declared with an initial value, setting item.scale = 2 results in a compilation error. This can be resolved by adding the scale: 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.
  • 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 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 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 or Release instead of MinSizeRel.

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 in lib/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 without g++-12, the GCC headers in the include path lead to missing C++ headers ('cstdint' file not found) when running qmlinterfacegenerator. Either remove gcc-12 or install g++-12 to resolve this issue.

Available under certain Qt licenses.
Find out more.