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:
- Tier-1 support for TRAVEO T2G 6M DDR Evaluation Kit.
- Tier-2 support for Infineon PSOC™ Edge E84 evaluation kit.
- Tier-3 support for
NXP RW612 on ZephyrandRenesas RA8P1.
- 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:
- Parse translation data in all the
qmlprojectfiles before generating a list of languages. - Added the MCU.Config.translationStorageSection property to enable defining a separate storage section for translation files.
- Added the MCU.Config.glyphsLayoutCacheSize property to define the cache size for the glyph layout and shaping data.
- Added the --generate-resource-binaries command-line option to enable regeneration of resource binaries only without exporting any configuration, QML files, and source files.
- Keep the font file for the Monotype Spark font engine in the resource binary, enabling version and checksum verification.
- The list of languages supported by the application is based on the translation files in the main QmlProject file.
- Added the following MCU.Config properties to support the Safe Renderer module:
- MCU.Config.safeTextCachePolicy to enable defining cache policy for dynamic SafeText resources.
- MCU.Config.safeBitmapRuntimeAllocationType to define the memory allocation type for accessing the SafeImage, SafePicture, and static SafeText resources.
- MCU.Config.safeBitmapStorageSection to enable defining a memory section for SafeText, SafeImage, and SafePicture.
- MCU.Config.safeRendererCrcAlgorithm to define a CRC algorithm for Qt Safe Layout tool.
- MCU.Config.safeTextFontDirectory to configure the fonts directory.
- MCU.Config.safeTextRuntimeAllocationType to define a memory allocation type for the dynamic SafeText resources.
- MCU.Config.safeTextStorageSection to define a memory section to store the dynamic SafeText resources.
- Parse translation data in all the
- 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
~57KB 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.
qmltocppimprovements:- 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:
- Added CoordinateAnimation to animate the transition between two coordinates.
- Optimized memory requirements for geoCoordinate.
- Added the QtPositioning global type, which offers the coordinate() method.
- Added distanceTo() method to calculate distance in meters between the two coordinates.
- Added speed and timestamp to enable applications to configure these properties in a GeoPositionInfo. The corresponding read-only properties that enable you access these properties in QML are Position::speed and Position::timestamp.
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
0and it useselide: Text.ElideRight. The item now renders nothing and setstruncatedtotrue, matching Qt Quick. - Fixed
elide: Text.ElideRightignoring 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
imgsource attribute (CVE-2026-19395). - Fixed a signed integer overflow when parsing the
widthandheightHTML attributes.
- Glyph layout cache and text memory fixes and updates:
- Added the
TextLayoutWorkBuffersPlatformInterface::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_GlyphDataDoesNotFitInCachefailures 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
RenderNothingpolicy drops the text and logs a hint. Non-qmlproject builds use theGLYPHS_LAYOUT_CACHE_EXHAUSTION_POLICYCMake definition.
- Added the
- 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::stringor 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)returned50°instead of50°C. If the text ended with such a character, the application could crash.
- Fixed corrupted text, crashes, or memory corruption when a string created from
- Added the
border.widthandborder.colorgrouped properties to Rectangle, following the Qt Quick API. - Fixed an out-of-bounds write when parsing a malformed
svgPathvalue that contains aZorzcommand. - 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_inputexample when pressing accept a second time. qmltocppfixes:- Fixed incorrect code generation after a
breakorcontinuein some control flow, such as a nestedswitchwith adefaultcase inside an outercaseblock. This could make a switch fall through into the next outercase, a loop run only once, or a function skip its trailingreturn. - Fixed incorrect code generation for some String.arg() calls, such as those inside a Singleton.
- Fixed incorrect code generation after a
qmlinterfacegeneratorfixes and updates:- Removed the
qmlinterfacegeneratorresourcestarget. The tool now resolves the clang resource directory on its own.QulMacros.cmakeandqmlprojectexporterno longer pass-resource-dir. - Fixed broken builds that use easing curves with
libclang21 or newer. The tool generatedeasing.typeasvarinstead ofEasing.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.cmakekeep the bundledarmgccheaders out of the build, asqmlproject-basedbuilds already did.
- Removed the
- Fixed
qulrccproducing 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
COMMENTargument toadd_custom_commandin host builds. - Fixed exported CMake projects running
qmlprojectexporteragain on the first build after a pristine build.
- Added support for overriding the toolchain triplet in
- 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-cipcommand-line option. - Updated
license-cipto version 3.6.4. - Fixed host tools hanging indefinitely when waiting for a license reservation.
- Changed host tools to check the license only with the Qt license server (
- 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-zephyrandmimxrt1064-evk-zephyrplatforms to allocate Qt Quick Ultralite memory from the Zephyr kernel heap instead of the C library heap. If you use your ownprj.conf, setCONFIG_HEAP_MEM_POOL_SIZEfor the Qt Quick Ultralite allocations and enableCONFIG_SYS_HEAP_RUNTIME_STATS. - Added Zephyr 4.4 support to the
mimxrt1060-evkb-zephyrandmimxrt1064-evk-zephyrplatforms, which still support Zephyr 4.1. Set the newQUL_ZEPHYR_USE_KSCANCMake option toOFFto 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 runsqmlprojectexporterduring the Zephyr CMake configure step and provides thewest build-qul-libscommand 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-zephyrplatform 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-zephyrandmimxrt1064-evk-zephyrplatforms. With the Zephyr module, you can enable it usingCONFIG_QUL_DEVICELINK. - Added support for building the Qt Quick Ultralite libraries with Zephyr SDK 1.0 and its
picolibcC library. - Added support for monitoring performance metrics and stack usage.
- Changed the
- 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_bvariant with the new-DQUL_TVIIC2D6MDDR_BOARD_REVISION=REV_BCMake 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
vcvtinstruction generated during LTO. - Fixed a one-pixel trail behind moving items on Linux DRM platforms, caused by an undersized
FB_DAMAGE_CLIPSrectangle.
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
contentItemthat uses theparentprefix 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
currentIndexvalue by assigning a valid index at the start.
qmltocppfixes:- Fixed a compiler error when the PropertyChanges::target value uses the parent
idas prefix. For example,target: myItem.label, wheremyItemis the parent item's Id whilelabelis its child. - Fixed Loader to choose the correct component when a State binding sets the
sourceproperty.
- Fixed a compiler error when the PropertyChanges::target value uses the parent
- Upgraded the FontmapEditor to v4.0.1.
qmlprojectfixes:- Fixed the
fileSelectorproperty inMCU.Configto 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.
- Fixed the
- 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
RelWithDebInfobuild type. - Handle runtime changes to
ImageLayer.sourceto 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
ItemLayerposition 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
-ffreestandingcompiler 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::mapandstd::vectorto avoid losing any data while the task is still active. - Removed
bytesPerLineand 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-mwdriver to version 1.0.1.
qmltocppfixes:- 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
qmlprojectexporterto also considertranslationStorageSectiondefined 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.
qmltocppfixes:- Fix code generated for component layout with many items.
- Ignore
importstatements if a module is importing itself. - Skip generating the translation function if no translation files are found.
qmlprojectexporterfixes:- 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
fontcompilerwarnings 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
- New Functions in Namespaces
- New Enum Types
- New Type Aliases
- New Variables
- New QML Types
- New QML Properties
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
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
- What's New in 2.11
- What's New in 2.10
- What's New in 2.9
- What's New in 2.8
- What's New in 2.7
- What's New in 2.6
- What's New in 2.5
- What's New in 2.4
- What's New in 2.3
- What's New in 2.2
- What's New in 2.1
- What's New in 2.0
- What's New in 1.9
- What's New in 1.8
- What's New in 1.7
- What's New in 1.6
- What's New in 1.5
- What's New in 1.4
- What's New in 1.3
- What's New in 1.2
- What's New in 1.1
Available under certain Qt licenses.
Find out more.