Qt for MCUs 2.2 LTS released

We're excited to announce that Qt for MCUs 2.2 LTS is now available! It is the first release of Qt for MCUs that will be long-term supported; bug fixes for it will be released for a period of 18 months. This release adds improvements to text rendering,  new APIs to handle errors in GUI code, new tools to generate C++ from QML independently from CMake, and a new performance and footprint guide to help you get the best results with Qt for MCUs.

The complete list of changes included in this version can be found in the changelog in the online documentation. Continue reading for more information on the content of this release.

Improved text rendering support

Automatic text wrapping

We have been putting a lot of effort in the past releases to bring improvements and new features to the text rendering engine in Qt Quick Ultralite. The Qt for MCUs 2.0 release, for example, added support for complex scripts such as Arabic or Thai, while Qt for MCUs 2.1 added automatic truncation of overflowing text. Version 2.2 adds another useful and essential feature for cases where text elements can have a varying length: automatic line breaking, also known as text wrapping.

The new Text.wrapMode QML property lets you choose how wrapping should be done: on word boundaries, anywhere on a given line, or a combination of both. The API and behavior are the same as in standard Qt Quick, and the implementation considers language specifics such as text direction.

Robust and traceable applications

Error handling

Reacting to invalid states in an embedded system is important. Depending on the application, it can pose a safety risk to the user. In other cases, it can simply be a frustrating experience for the user, for example, if an error causes a complete GUI freeze. Qt for MCUs now has a new error reporting mechanism to let the application react appropriately to errors happening in Qt Quick Ultralite, such as a memory allocation error or an invalid GPU operation. Actions could be a notification to the user or an automatic device restart. The APIs can also be used to implement custom logging mechanisms for debugging or diagnostic purposes. The default implementation prints errors to the console.


For more information on this feature, head to this page.

Enabling new workflows

Standalone code generation tools

One key step of compiling a Qt for MCUs application is converting QML code and graphic asset files to C++ code. This process has been so far tied to our CMake-based build system, requiring any Qt for MCUs application to have a valid CMake project file and a working compiler toolchain to generate code. To enable easy integration of Qt for MCUs GUIs into any project, we added a new standalone code generator: qmlprojectexporter. The code it generates can be imported into the 3rd-party IDE or build system of your choice. Along with the new tool, we added a new project description file format based on the QML language to declare all of your project's GUI assets and their properties. This new project file format must be used to export code with qmlprojectexporter.


We also added a new convenience platformexporter tool to export all sources needed for a given MCU port into your project, enabling its integration into your application rather than as a library that must be built with Qt for MCUs' build system.

Both tools and the new project file format are available as Technology Preview in Qt for MCUs 2.2, meaning that they are not considered stable, and APIs could still change in future versions. Note that the use of these tools is optional; existing applications can continue being built the same way as they were in version 2.1 and earlier.

These new tools pave the way for future features such as code export from Qt Design Studio or direct integration into hardware vendor IDEs.

And more!

These are just the main highlights of Qt for MCUs 2.2. There is also a new performance and footprint guide, with tips and tricks to help you create small and performant applications, support for the IAR compiler for Infineon Traveo II, or a refreshed GUI for the Monotype FontmapEditor tool, now also available for Linux. Check out the release changelog to see the complete feature list.

What's next

The next feature update is planned for November with version 2.3. Highlights for this release will include dynamic creation and management of QML objects, partial frame buffer support to significantly reduce RAM requirements on the most constrained devices, improvements to the standalone code generation tools, and added support for the MinGW GCC compiler to build preview applications for Windows. 

Get Qt for MCUs 2.2 LTS today!

If you’re an existing Qt for MCUs developer, you can download Qt for MCUs 2.2 LTS from the Qt Maintenance Tool, located at the root of your Qt for MCUs installation directory. If you're looking to dive in for the first time, click here to get started. Either way, we hope you enjoy the new features and improvements, and as always, we would love to hear your feedback and feature requests in the comments!

Blog Topics: