C

What's New in 2.2

Qt Quick Ultralite maintains source compatibility between minor releases. However, some changes may require you to adapt the application code. The following sections highlight such changes:

New features

  • Added QUL_PLATFORM_DEFAULT_BINARY_ASSET_OPTIONS to enable configuring how the asset data binaries are included in the application binary.
  • Compiler, graphics driver, and SDK upgrades:
    • ARM GCC compiler v10.3.
    • IAR compiler 9.20.4.
    • Graphics Driver v1e.1.0 for Traveo II Cluster Series
    • MCUXPresso SDK v2.11.1
  • Added support for the RK055HDMIPI4MA0 display on NXP RT1170.
  • Added the QUL_RH850_FLASH_TYPE and QUL_RH850_RAM_TYPE configure options to enable using Octa flash and Octa RAM for resource data.
  • Added support to build the tviic2d6m-baremetal platform using the IAR 8.22 Functional Safety compiler.
  • Added the Text.wrapMode API.
  • Added error notification API to enable applications handle Qt Quick Ultralite errors gracefully. Refer to Error handling for more information.
  • Added the qul_generate_flash_target CMake command to generate flash target.
  • Added the texture() and textureCount() functions to access texture data.
  • Added the performance and footprint guide to enable using Qt for MCUs optimally.
  • Added Monotype FontmapEditor support for the Linux host, and upgraded it to the latest version.
  • Added the following tools to enable better integration with 3rd party IDEs and build systems. These tools should enable developing a Qt Quick Ultralite application using an IDE or build system of your choice:
    • The qmlprojectexporter (technology preview) tool generates C++ code based on the QML sources, image assets, font files, and translations used by the application. It parses the .qmlproject files to gather necessary information that is required to generate the C++ code.
    • The Qt Quick Ultralite Platform Exporter (technology preview) tool exports the sources and toolchain settings for a specific platform.

Fixed issues

Qt for MCUs v2.2.5

  • Fixed memory corruption when using the onChanged QML handlers for C++ properties.
  • Fixed build config to avoid including debug-only code in the MinSizeRel and release builds, leading to increase in memory footprint and lowering performance.
  • Fixed transition animations on PropertyChanges to avoid using property binding from a wrong state. Every call to the setValue() method clears the old binding.
  • Fixed animations triggered from C++ to make sure they don't end early.
  • Fixed state update issues with the Spark font engine if FontConfiguration.MCU.fontVectorOutlinesDrawing is enabled.
  • Fixed qmltocpp to make sure it generates valid C++ code for quoted string literals.
  • Fixed assertion for auto-wrapped Text items when its horizontal alignment is either Text.AlignRight or Text.AlignHCenter.
  • Fixed assert and UI artifacts when rendering RTL text that is elided but not aligned to the left.
  • Fixed unknown artifacts on resizing the window on Desktop platform. The window has a fixed size now.
  • Fixed the ImageLayer implementation to avoid invalid memory access, which could crash the application.
  • Use the default value (1) for strokeWidth property of a ShapePath if it is 0. This improves code compatibility with Qt.
  • Fixed wrong positioning and rendering glitches with transformed text because of one pixel offset.
  • Fixed wrong stacking order of children with a z value.
  • Fixed SwipeView behavior to make sure that enabling and disabling a view also affects its children.
  • Fixed Qt desktop platform library to make sure a Qt for MCUs application does not busy-loop on desktop.
  • Fixed the ProgressBar implementation to initialize its from and to properties with default values.
  • Fixed fontcompiler to use enough memory for heap and glyph cache when using the Spark font engine.
  • Fixed QmlProject config for storage sections to support section names with dot prefix.
  • Renamed sources files to avoid overwriting C object files if a C++ source file has the same name. This happens while using Ninja generator with the IAR toolchain.

Qt for MCUs v2.2.4

  • Fixed CMP0083 CMake policy error while building for the Linux desktop.
  • Fixed the following in the Animation logic:
    • Avoid wrong QulError_Animation_ProgressOutOfRange assertions, while checking if the given value is within (0-1) bounds.
    • Trigger signals for standalone and top-level animations only to improve compatibility with Qt Quick animation.
  • Fixed inconsistency in handling resource properties for resources with custom BASE and PREFIX.
  • Fixed qmltocpp to prevent removing a function call with unused return value.
  • Fixed the CMake configuration with Ninja to display progress of the flashing tool.
  • Fixed the NXP platform port to avoid queries for touch data when there are no touch interrupts.
  • Fixed stack size calculation logic to avoid the array-bounds compiler warning.
  • Fixed unexpected artifacts on STM32H750B while running the swipe_game demo MinSizeRel build.
  • Fixed fontcompiler to avoid wrong size for the glyphMap.
  • Fixed the UI update logic to make sure that a Qul::Property::setValue call triggers a repaint.
  • Fixed the CMake config for the automotive demo to include HMI sources.
  • Fixed the interrupt_handler example to make sure the user button press behavior is consistent on all platforms.

Qt for MCUs v2.2.3

  • Fixed type cast error on property change event for properties of type std::string.
  • fontcompiler fixes:
    • Handle space characters in the font.unicodeCoverage list.
    • Avoid superfluous glyph not found warnings.
  • Fixed rendering issues with a rectangle item that is at the center of its parent rectangle. This improves compatibility between QtQuick and Qt Quick Ultralite.
  • Fixed segfault while evaluating properties that are not initialized.
  • Fixed Text item to ensure that it handles the clip property like a standard QtQuick text item does.
  • Fixed 24bpp blending on STM32F469I-Disco boards.
  • Fixed Cypress Traveo II kit (JSON) file to ensure Qt Creator has all the necessary information to create a kit.
  • Fixed touch handling on STM32F769I boards with the IAR toolchain, to also include the touch events outside the interrupt context.
  • Fixed Text item to ensure line breaks for items with the Text.WordWrap as wrap mode, complies with the Unicode line break algorithm.
  • Fixed division by zero if an Animation has its duration set to zero while the animation is active.
  • Fixed crash on deleting the dirty render nodes.
  • Fixed Property to avoid QulError_PropertyBase_DependencyNodesNotMarkedDirty assertions if a property has a combination of bindings and transitions. This also avoids the assertion if the property changes several times.
  • Fixed fontcompiler to include only the unique characters into the Spark font engine cache priming data, ignoring duplicates in the font.unicodeCoverage list.

Qt for MCUs v2.2.2

  • Fixed CMake logic to ignore the JDK found in the system environment while trying to find JLink.
  • Fixed build type check for the multi-config generators such as MSVC to ensure that the default build type is correct.
  • Fixed rendering artifacts on Cypress Traveo II with the shapes example built using the IAR toolchain.
  • Fixed performance logging issues with a custom exec loop.
  • Fixed issues related to flashing binaries onto the STM devices.

Qt for MCUs v2.2.1

  • Fixed the logic used for auto-generation of static text translation arrays, to ensure that they are always stored in flash.
  • Fixed the platform port for Infineon Traveo II to avoid the rounded rectangle blending artifacts with OTF windows.
  • Fixed slower animation loops on the STM platform.
  • Updated PauseAnimation and TimeLineAnimation to be based on the timestamp to avoid running them longer than expected.
  • Fixed performance issues that was caused by frequent calls to the DrawingEngine::blendPath() function.
  • Fixed the qmlcompiler to improve the error messages related to the invalid QML filename.
  • Fixed following issues in the Desktop simulator:
    • Render quality when system scaling is enabled.
    • Default build type for applications on Windows is set to Release.

Qt for MCUs v2.2.0

  • Optimized bindings to reduce code size by around 3-15% depending on the toolchain and the application.
  • Fixed text layout to not include leading (font metric) in line height. This improves compatibility between Qt Quick and Qt Quick Ultralite.
  • Fixed layers ignoring visible property and ensure that the property is also propagated to the layer's children.
  • Fixed packaging to ensure that the compatibility sources are included.
  • Optimized qulrcc to ensure that the raw binary data is aligned properly.
  • Optimized the Screen and ItemLayer types to warn about wrong usage.
  • Fixed inconsistent behavior in qulrcc when a qul_add_resource has BASE and PREFIX defined.
  • Updated NXT RT1170 platform port to use a series of bezier curves instead of an arc.
  • Fixed the font data array address alignment issue.
  • Updated Qt Quick Ultralite to be compatible with Qt 6.2.4.
  • Fixed memory manager to skip aligning memory in case of a nullptr.
  • Fixed the Chess example to handle the turn indicator's location based on the screen orientation.
  • Fixed rendering issues on Traveo II with Green Hills toolchain.
  • Refactored blending logic to avoid flickering on STM32H750B.

New APIs

APIs for application development

New Member Functions

Class SharedImage:

Qul::PlatformInterface::Texture texture(int textureIndex = 0) const
int textureCount() const

New Functions in Namespaces

QulErrorHandler *setErrorHandler(QulErrorHandler *handler)

New Global Functions

const char *errorCodeToString(QulError code)

New QML Properties

QML Type Text:

wrapMode : enumeration

APIs for platform development

New Global Functions

void error(unsigned int lineNumber, QulError code, int param1 = 0, int param2 = 0, int param3 = 0)
QulErrorHandler *setErrorHandler(QulErrorHandler *handler)

New Macros

QUL_ASSERT(expression, code, ...)

Changes in Previous Versions

What's New in 1.1

Changes in v1.1.0

What's New in 1.2

Changes in v1.2.0

What's New in 1.3

Changes in v1.3.0

What's New in 1.4

Changes in v1.4.0

What's New in 1.5

Changes in v1.5.0

What's New in 1.6

Changes in v1.6.0

What's New in 1.7

Changes in v1.7.0

What's New in 1.8

Changes in v1.8.0

What's New in 1.9

Changes in v1.9.0

What's New in 2.0

Changes in v2.0.0

What's New in 2.1

Changes in v2.1

Available under certain Qt licenses.
Find out more.