On this page

C

What's New in 2.12

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

New features

  • Added support for the following target platforms:
  • Added DeviceLink support to Infineon TRAVEO T2G targets built using either the Green Hills or IAR toolchains. This enables automated UI testing using Squish.
  • QmlProject improvements or updates:
  • Removed the GCC compiler-specific options and flags from CompilerExtraOptions, as these options and flags were also set in the CMake toolchain file (armgcc.cmake). This avoids hard-coding the options and flags, so that they are customizable.
  • Added Qul::activeLanguages property to get the list of languages that the application supports.
  • Added date value type to enable support for timestamp instance in Position instances.
  • Added Qul::validateMonotypeDataTableChecksums() to verify the integrity of Monotype data tables stored in external flash. Storing these data tables in an external flash saves approximately ~57 KB on the internal flash. Refer to Placing Monotype data tables in external flash for more information.
  • Updated the thermo demo to store the Monotype data tables in QSPI by default on STM32F769I Discovery Kit.
  • Added Qul::initResources() options to enable control the initialization behavior.
  • Added MCU.Config.glyphsLayoutCacheSize to control the size of cache for glyph layout data.
  • qmltocpp improvements:
    • Improved code that sets all the property bindings for a given root object to use table-based setters, which reduces code footprint significantly.
    • Added error checks for built-in read-only list property.
  • Added support for Coco to get code coverage results from the target hardware.
  • Added support to independently update application and its resource data. Also added queryResourceStorageSectionInfo() and more options to initResources() API, which enables UI features based on what resource data is available for OTA (Over The Air) updates.
  • RTOS, SDK and compiler upgrades:
    • MSVC compiler to 2022 on Windows 11.
    • Renesas RH850/D1M1A RGL SDK to v2.2.0a.
    • Renesas platform SDK to version 25.06.00.
    • NXP platform SDK to version 25.09.00.
    • STM32CubeH7 SDK to version 1.12.1.
    • Zephyr RTOS to v4.1.
  • Improved cache memory usage reports in the performance logs, counting all the allocated space including block overhead.
  • Added maybeTexture() method to check if there is enough space in the resource cache, instead of asserting.
  • Added multi-line elide mode, which you can enable using the MCU.Config.Experimental.multiLineElide QmlProject property. This mode elides any line that exceeds the available width. It does not require an explicit height to be set.
  • Added maximumLineCount property to limit the number of visible lines in a Text item.
  • Improved navigation API:

Fixed issues

Qt for MCUs v2.12.3

  • Text item fixes:
    • Fixed unnecessary eliding of text that fits the item width. Eliding now measures text by glyph advance width, similar to Qt Quick.
    • Fixed text overflow when an item's height is 0 and it uses elide: Text.ElideRight. The item now renders nothing and sets truncated to true, matching Qt Quick.
    • Fixed elide: Text.ElideRight ignoring maximumLineCount when the item has no explicit height.
    • Fixed the ellipsis appearing on the wrong side when eliding lines that mix left-to-right and right-to-left text.
    • Fixed an out-of-bounds read when positioning the TextInput cursor after the application changes the text.
    • Fixed a crash in Text and StyledText when HTML text has an empty img source attribute (CVE-2026-19395).
    • Fixed a signed integer overflow when parsing the width and height HTML attributes.
  • Glyph layout cache and text memory fixes and updates:
    • Added the TextLayoutWorkBuffers PlatformInterface::MemoryAllocator::AllocationType. It lets a platform place transient text-layout buffers in a chosen memory region, such as external RAM. Platforms that don't map it keep using the general heap.
    • Reduced cache fragmentation and spurious QulError_GlyphLayoutCache_GlyphDataDoesNotFitInCache failures when large paragraphs repeatedly change layout.
    • Reduced the memory use of the glyph bounding box cache.
    • Fixed a crash on cache exhaustion when a custom error handler set with setErrorHandler() returns instead of stopping execution.
    • Added MCU.Config.glyphsLayoutCacheExhaustionPolicy to select how text is rendered if the glyph data doesn't fit the cache. Qt Quick Ultralite first renders the text again after emptying the cache. If the rendering is still not successful, the default RenderNothing policy drops the text and logs a hint. Non-qmlproject builds use the GLYPHS_LAYOUT_CACHE_EXHAUSTION_POLICY CMake definition.
  • Monotype Spark font engine fixes and updates:
    • Fixed incorrect glyph hinting after switching component fonts. Text using several component fonts or font sizes now renders considerably faster.
    • Fixed applications silently failing to start when they use cache priming with some Unicode coverage and cache size combinations.
    • Added the number of cache priming entries copied and the time taken to the performance log.
  • String fixes:
    • Fixed corrupted text, crashes, or memory corruption when a string created from std::string or StdStringType was passed to a Qt Quick Ultralite API. Strings created from string literals were not affected.
    • Fixed a crash and truncated output in String.arg() for text with characters in the U+0080 to U+00FF range, such as the degree sign (°). The output lost its trailing characters. For example, "%1°C".arg(50) returned 50° instead of 50°C. If the text ended with such a character, the application could crash.
  • Added the border.width and border.color grouped properties to Rectangle, following the Qt Quick API.
  • Fixed an out-of-bounds write when parsing a malformed svgPath value that contains a Z or z command.
  • Fixed a crash when loading the virtual keyboard module indirectly.
  • Fixed a crash in PathView when accessing a delegate's attached property object before its creation.
  • Fixed focus not changing in the text_input example when pressing accept a second time.
  • qmltocpp fixes:
    • Fixed incorrect code generation after a break or continue in some control flow, such as a nested switch with a default case inside an outer case block. This could make a switch fall through into the next outer case, a loop run only once, or a function skip its trailing return.
    • Fixed incorrect code generation for some String.arg() calls, such as those inside a Singleton.
  • qmlinterfacegenerator fixes and updates:
    • Removed the qmlinterfacegeneratorresources target. The tool now resolves the clang resource directory on its own. QulMacros.cmake and qmlprojectexporter no longer pass -resource-dir.
    • Fixed broken builds that use easing curves with libclang 21 or newer. The tool generated easing.type as var instead of Easing.Function.
    • Fixed build failures, such as typedef redefinitions and missing headers, when using a custom sysroot with the CMake build APIs to cross-compile a Qt Quick Ultralite project for a Linux-based MPU target. New CMake options in QulMacros.cmake keep the bundled armgcc headers out of the build, as qmlproject-based builds already did.
  • Fixed qulrcc producing different output for an identical resource file across builds.
  • CMake fixes and updates:
    • Added support for overriding the toolchain triplet in armgcc.cmake.
    • Fixed platform-only builds failing to configure because CMake required CORE_PACKAGE_NAME.
    • Fixed a possible CMake parse warning caused by an unquoted COMMENT argument to add_custom_command in host builds.
    • Fixed exported CMake projects running qmlprojectexporter again on the first build after a pristine build.
  • License check fixes and updates:
    • Changed host tools to check the license only with the Qt license server (qtlicd), which the Qt Installer installs. If that check fails, the host tools fail.
    • Removed the fallback to the legacy license manager and the --no-license-cip command-line option.
    • Updated license-cip to version 3.6.4.
    • Fixed host tools hanging indefinitely when waiting for a license reservation.
  • Footprint updates:
    • Removed duplicated code, saving 360 bytes to 1.4+ KB depending on the application and toolchain.
    • Reduced generated code by 1-2 KB or more for a typical application built with the GHS or ARM GCC toolchains.
  • Zephyr fixes and updates:
    • Changed the mimxrt1060-evkb-zephyr and mimxrt1064-evk-zephyr platforms to allocate Qt Quick Ultralite memory from the Zephyr kernel heap instead of the C library heap. If you use your own prj.conf, set CONFIG_HEAP_MEM_POOL_SIZE for the Qt Quick Ultralite allocations and enable CONFIG_SYS_HEAP_RUNTIME_STATS.
    • Added Zephyr 4.4 support to the mimxrt1060-evkb-zephyr and mimxrt1064-evk-zephyr platforms, which still support Zephyr 4.1. Set the new QUL_ZEPHYR_USE_KSCAN CMake option to OFF to use the Zephyr Input API for touch with Zephyr 4.2 or newer.
    • Added the Qt Quick Ultralite Zephyr module, which adds Qt Quick Ultralite to a Zephyr application as a west module configured through Kconfig. It runs qmlprojectexporter during the Zephyr CMake configure step and provides the west build-qul-libs command to build the Qt Quick Ultralite libraries with the Zephyr toolchain. For more information, see Using Qt Quick Ultralite with Zephyr. The exported project workflow is now described in Manual Qt Quick Ultralite integration with Zephyr.
    • Added the native_sim-zephyr platform to run Qt Quick Ultralite applications on a Linux host. For more information, see Using Zephyr on native_sim.
    • Added DeviceLink support to the mimxrt1060-evkb-zephyr and mimxrt1064-evk-zephyr platforms. With the Zephyr module, you can enable it using CONFIG_QUL_DEVICELINK.
    • Added support for building the Qt Quick Ultralite libraries with Zephyr SDK 1.0 and its picolibc C library.
    • Added support for monitoring performance metrics and stack usage.
  • Infineon TRAVEO T2G 6M DDR fixes and updates:
    • Fixed instability and build failures when using TVII-GraphicsDriver-V2.5.0.
    • Added support for the rev_b variant with the new -DQUL_TVIIC2D6MDDR_BOARD_REVISION=REV_B CMake option. Testing it requires Graphics Driver for TRAVEO T2G Cluster Series V2.5.0.
  • Upgraded Nuvoton Gerda-4UL Board from Tier-3 to Tier-2 platform.
  • Fixed a build failure with Arm GNU Toolchain 12.2 on Cortex-M85 targets, such as Renesas EK-RA8D1, where the assembler rejected a vcvt instruction generated during LTO.
  • Fixed a one-pixel trail behind moving items on Linux DRM platforms, caused by an undersized FB_DAMAGE_CLIPS rectangle.

Qt for MCUs v2.12.2

  • Loader no longer keeps its old size when loaded content resizes at runtime.
  • Fixed a crash in controls with a custom contentItem that uses the parent prefix to access a property.
  • Fixed a out-of-bounds read with inline images.
  • Reduced ROM footprint of debug builds by approximately 3.5 Kb.
  • Text item fixes:
    • Fixed auto-wrapping to use advance-based metrics for detecting wrap-point. This may sometimes result in glyph ink extending past the text width. If you are using clip, consider adding a small margin to avoid the glyphs appearing cropped.
    • Added support for soft hyphen (\\u00AD), and StyledText with <b> and <i> tags.
  • PathView:
    • Added the count property.
    • Fixed out-of-range currentIndex value by assigning a valid index at the start.
  • qmltocpp fixes:
    • Fixed a compiler error when the PropertyChanges::target value uses the parent id as prefix. For example, target: myItem.label, where myItem is the parent item's Id while label is its child.
    • Fixed Loader to choose the correct component when a State binding sets the source property.
  • Upgraded the FontmapEditor to v4.0.1.
  • qmlproject fixes:
    • Fixed the fileSelector property in MCU.Config to choose the main file.
    • Improved support for multi-module projects by making QML interface types of one module visible to other modules.
    • Improved error messages on failure to export to a platform. The messages now provide more context about the failure by including third-party library paths.
  • Desktop simulator:
    • Fixed a freeze when Squish paused a recording session.
    • Fixed a crash on exit when using the simulator with Squish.
  • T2G TRAVEO fixes or updates:
    • Enabled instruction and data caches to improve application's performance.
    • Fixed a crash during platform initialization on T2G TRAVEO 6M and 6M Lite because of using IAR compiler with RelWithDebInfo build type.
    • Handle runtime changes to ImageLayer.source to make sure they are visible on screen.
    • Fixed error on setting the ImageLayer.source property after loading the UI.
    • Added support for retarget-io v1.9.0 on the ModusToolbox platform.
    • Enabled HyperRAM support on T2G TRAVEO 6M and 6M Lite.
    • Fixed flickering when animating ItemLayer position or opacity.
    • Fixed high CPU usage after removing a visible item from Loader, Repeater, ListView, or similar.
    • Fixed animation flicker on T2G 6M Lite with HDMI output.

Qt for MCUs v2.12.1

  • Removed the -ffreestanding compiler flag from the ARMGCC toolchain file. This avoids using the incompatible <cmath> header while building with GCC 13 or later versions.
  • Fixed automotive and motor_cluster demos to avoid a crash on Windows 10 with MSVC 2019. Moved the task and timer handling to std::map and std::vector to avoid losing any data while the task is still active.
  • Removed bytesPerLine and updated imageInformation to include all properties of an image.
  • Upgrades:
    • Fixed CVE-2024-0151 vulnerability by upgrading the ARM GNU toolchain headers to v15.2.rel1.
    • Upgraded TRAVEO T2G CYT4DN's ModusToolbox tviic2d-gfx-mw driver to version 1.0.1.
  • qmltocpp fixes:
    • Fix crash while parsing Connections that handle a signal with parameters.
    • Fix regression in properties of type ListModel<T>.
    • Parse extra properties of an Item while resolving property bindings.
    • Update visibility of child items when their parent Item's visibility changes.
    • Check directory imports to include only relevant QML Component definitions that the current Component depends on. If there is no dependency on any Component in the directory, ignore the import.
  • Added support for the native Infineon resource generator tool on Linux for TRAVEO T2G 6M Lite.
  • Fixed the layout logic for Item type to handle changes to its implicit size.
  • Updated qmlprojectexporter to also consider translationStorageSection defined in the board defaults CMake configuration.

Qt for MCUs v2.12.0

  • Enabled TRAVEO T2G targets to use the resource cache to preserve assets for multiple frames when using OTF layers. This avoids visual artifacts on the OTF layer when the texture data it's rendering gets invalidated in Qt Quick Ultralite Core.
  • Fixed out of memory exception on STM32F769I target based on IAR toolchain. Changed to a fixed stack of size 24K for IAR builds too.
  • Fixed graphical glitches when drawing path strokes on T2G TRAVEO boards.
  • Fixed the JPEG decoder to allocate memory dynamically instead of using a hard coded memory address on TRAVEO T2G targets.
  • Fixed incorrect perspective transforms on TRAVEO T2G targets when destRect.topLeft() != srcRect.topLeft().
  • Improved error reporting when surface allocation fails on TRAVEO T2G.
  • Fixed text caching to avoid visual artifacts because of removed entries when the drawing engine is still reading them asynchronously.
  • Fixed platform adaptation for Renesas RH850 to use CPU fallback engine for RGB332 pixel format.
  • qmltocpp fixes:
    • Fix code generated for component layout with many items.
    • Ignore import statements if a module is importing itself.
    • Skip generating the translation function if no translation files are found.
  • qmlprojectexporter fixes:
    • Warnings related to C++ compiler options.
    • Use correct URI for the Qt Safe Renderer module.
  • Fixed position property to make sure it is accessible from QML.
  • Fixed GHS compiler generated dependency file suffix information, to make sure Ninja knows the correct file name.
  • Fixed a crash because of resetting a ListView or Repeater model from the delegate.
  • Fixed fontcompiler warnings by disabling the char attribute mapping to the corresponding cluster value.
  • Optimized text performance by avoiding unnecessary re-layout and clearing cache before rendering.
  • Fixed memory corruption on TRAVEO T2G, where the JPEG decoder was allocating memory dynamically instead of using a hard coded memory address.
  • Fixed text cache implementation to call waitUntilAsyncReadFinished() before removing entries from the cache.

New APIs

APIs for application development

New Classes

New Member Functions

Class GeoPositionInfo:

(since Qt Quick Ultralite 2.12) bool hasSpeed() const

Class SharedImage:

(since Qt Quick Ultralite 2.12) bool maybeTexture(Qul::PlatformInterface::Texture &texture, int textureIndex = 0) const

New Functions in Namespaces

(since Qt Quick Ultralite 2.12) bool queryResourceStorageSectionInfo(const char *resourceStorageSectionName, Qul::ResourceStorageSectionInfo *info = NULL)
(since Qt Quick Ultralite 2.12) bool validateMonotypeDataTableChecksums(Qul::MonotypeDataTables tables = MonotypeDataTables(MonotypeDataTable::AllDataTables))

New Enum Types

(since Qt Quick Ultralite 2.12) enum class RenderHint { SafeRendering }
(since Qt Quick Ultralite 2.12) enum class MonotypeDataTable { decompositionData0, decompositionData1, decompositionData2, decompositionData3, decompositionIndex, …, AllDataTables }
(since Qt Quick Ultralite 2.12) enum class ResourceInitializationOptions { DisableAutomaticVersionChecking, AllowUnlistedResources }

New Type Aliases

(since Qt Quick Ultralite 2.12) RenderHints
(since Qt Quick Ultralite 2.12) MonotypeDataTables

New Variables

(since Qt Quick Ultralite 2.12) double speed
(since Qt Quick Ultralite 2.12) uint64_t timestamp

New QML Types

New QML Properties

QML Type Position:

(since Qt Quick Ultralite 2.12) speed : double
(since Qt Quick Ultralite 2.12) speedValid : bool
(since Qt Quick Ultralite 2.12) timestamp : date

QML Type Qul:

(since Qt Quick Ultralite 2.12) activeLanguages : list<string>

QML Type Text:

(since Qt Quick Ultralite 2.12) maximumLineCount : int

APIs for platform development

New Classes

New Member Functions

Class DrawingEngine:

(since Qt Quick Ultralite (Platform) 2.12) virtual Qul::PlatformInterface::RenderHints supportedRenderHints() const

Changes in Previous Versions

Available under certain Qt licenses.
Find out more.