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.
- The
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
orText.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 is0
. 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
andto
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.
- Avoid wrong
- 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 theglyphMap
. - 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
Changes in v1.1.0 | |
Changes in v1.2.0 | |
Changes in v1.3.0 | |
Changes in v1.4.0 | |
Changes in v1.5.0 | |
Changes in v1.6.0 | |
Changes in v1.7.0 | |
Changes in v1.8.0 | |
Changes in v1.9.0 | |
Changes in v2.0.0 | |
Changes in v2.1 |
Available under certain Qt licenses.
Find out more.