Qt Roadmap for 2022
Qt 6.2 was released in September 2021, delivering the first Long-Term Supported (LTS) version within the Qt 6 series. With Qt 6.3 getting close to the finish, it is a good time to reflect on what the next steps for the Qt product will be.
But first, it is important to state that we would not have come so far without the strong support of our community. Contributions, reports, and mailing list discussions are equally beneficial to bring different perspectives to The Qt Company, steer us towards common needs, and tackle the biggest areas to improve upon. Thanks to everyone who helped us make each version of Qt a better one than before. In this post, we will focus mostly on The Qt Company’s efforts for Qt. There are many extra items coming from individual contributors as well as companies in the ecosystem.
With Qt representing a platform, it is sometimes hard to identify the individual assets within the portfolio. Qt allows you to create any kind of solution, starting from the desktop, moving through mobile down to low-level embedded projects. Even Microcontroller solutions are possible via Qt for MCU. Qt comes with many tools supporting the creation of your solutions. Starting with 2D and 3D user interface composition with Qt Design Studio, development either in Qt Creator or one of other IDE integrations and recently also QA tooling with Froglogic’s products it covers the full software development lifecycle.
In this blog post, we will focus on the framework capabilities. This provides a good overview of the new capabilities to products you can create with Qt. For our tooling-related offering, we will provide follow-up articles.
Additions across the whole spectrum
Let us start with those additions that will benefit all target platforms similarly. After the migration of most used modules to Qt 6, we do not stop there. We have been listening to feedback from all angles, customers, and the community. As a consequence, we have been looking into and will continue investing in items not available yet.
For Qt 6.3, Qt PDF has been ported and will initially be made available to everyone. Similarly, Qt Speech is currently being worked on, where we might see a reintroduction at a later stage.
Furthermore, Qt Location has already been receiving major updates from Lauri Laanmets, whom we are very thankful for. These changes are great enablers for continuous efforts in that field. After various discussions with customers and open-source users, we have finished setting the scope for a map visualizing solution. Efforts in this area will continue later in this half of the year. As this topic has been mentioned rather often in the comment section, it deserves a dedicated post on its own and we will follow up soon on this one.
Moving from individual modules, the aim is to add one more important platform into the Qt portfolio, which is Qt for WebAssembly. WebAssembly is a very exciting technology, which bridges between native and web solutions. Not only does it help bring your native user interfaces towards the web. It is also a strong enabler for web applications that need the ultimate performance for tasks like video editing, image recognition, gaming, etc. Qt for WebAssembly serves these needs perfectly and has been in a Technology Preview state for a while. Our current focus will mostly be around ironing out the testing capabilities to be able to deliver it in a quality our users expect. Again, we will provide much more news around this soon.
We have been talking extensively about the introduction of the Qt Quick Compiler for Qt 6, for reference please read these posts by our Product Management as well as developers ( 1 2 3 ). During this year, the work will continue and some additional features are planned. Amongst other benefits, the Qt Quick Compiler will reduce the time spent for evaluating bindings and bring QML generally closer to C++ for better performance.
Even though it only slightly touches the framework, the QML Language Server support will be coming soon, which provides a central tool for any parsing, refactoring, and linting efforts. Starting with a Qt Creator integration, we aim to also bring LSP towards the Visual Studio AddIn as well as to Visual Studio Code.
To simplify setting up a development environment and learning from other programming languages, package managers are getting increasingly important. You have probably read about our initiatives to support Conan and fetching Qt via Conan. Further updates on how to streamline the workflow, also from an IDE perspective, will come soon.
Continuously strong on the desktop
Qt has started from the desktop and always considered it a crucial component in our offering. Not only does a large portion of developers start on the desktop, dog-fooding is important for keeping our tools like Qt Creator, Qt Design Studio, Squish, etc., working in top-notch quality.
Most of the features being introduced over the last years have also benefitted desktop and mobile usage, but sometimes it is also better to highlight changes and additions for those segments specifically. Hence, let us dive into those in these sections.
New operating system versions have been coming up for all major platforms, Windows as well as macOS. While Windows 11 is mostly an iteration from a development perspective, Qt has taken care of continuous support and making sure your application works with the latest Windows, but also Windows 10. Further and deeper updates to the style changes will be implemented. We have been working hard to support Windows on ARM and will put more effort into it with new hardware coming to the markets. On the Apple hardware side of things, the largest change clearly has been the introduction of the Apple Silicon (M1) architecture . From very early on Qt 6 has been updated to support deploying to the latest macOS platforms.
In addition to supporting an existing set of features and modules, there are also lots of new features coming. Components like TreeViews and Calendar are used much more on desktop platforms compared to mobile or embedded. Consequently and based on your feedback, those have been introduced and integrated into Qt Quick Controls starting with 6.3. Furthermore, Qt Quick Dialogs are getting updates all the time to better suit usage on desktop platforms. Many optimizations have happened regarding the display of Large Text components, like for instance TextEdit. There have already been updates for managing HiDPI scenarios, but we will further improve in this field, especially in scenarios with multiple monitors with different settings, including different fractional scales.
Qt Widgets are widely used on desktop platforms and have and always will be supported to run properly. In addition, bridging between Qt Widgets and Qt Quick enables you to use the best of both worlds. This mostly happens around QQuickWidget. QQuickWidget will let you embed Qt Quick elements into a widget-based desktop application. The prime use case is to have the latest user interface capabilities with animation, hardware acceleration, shaders integrated into your project. In addition, it enables a smooth conversion of your user interface. Seldomly, a project can overhaul the whole application in one go. We also are researching around the RHI and other elements, but have nothing concrete to share as of now.
Underlining Qt on mobile platforms
On the mobile side, the latest versions of Android and iOS are supported. It can be a stretch to decide which version you want to keep compatibility while also fetching in the latest. Also, store requirements have been changing lately, and Qt will adapt to these.
Styling is an important element for making an application feel native. Thus, we are working on an updated iOS Style, while also updating the Material style for Android and Universal for Windows.
Moreover, additional requirements can make development complicated for mobile platforms. We are currently researching how to improve permission management in general. Platforms have evolved from a static description towards more dynamic approaches. Each user can decide upon runtime, in a granular way, which permissions an app should have once or regularly. This is a good showcase for Qt’s investment into a proper API to help here. Authentication is another potential element to look into.
Sometimes you need platform-specific features, where a cross-platform API will not cut it. For Android specifically, one example is how to handle the different kinds of background tasks and services. The current Qt Service implementation will be extended to support additional use cases. Latest additions to the Android platform like rich content insertion, the new Splash Screen API, but also IME improvements and support for scoped storage will be worked on and coming with the next versions of Qt.
Strengthening Embedded offering
For embedded solutions, Qt will always make sure that the latest references devices will be added. The hardware portfolio being supported by Qt directly or through the whole vendor ecosystem is unchallenged, and Qt will make sure to keep it that way. The latest additions to the reference list of QBSPs are or will be for NXP i.MX8M (Plus), STM32MP1, Nvidia Jetson AGX Xavier, Renesas RZ/G2L and added Qt 6 support for Renesas E3,H3,M3. Our aim is to have the same simple workflow towards the maker scene with for instance a Raspberry Pi as for i.MX8 and other reference platforms. Also, the underlying operating system can play an important role in your product design. With support for QNX, Integrity, and other real-time operating systems, Qt provides full flexibility of choice to the user. Lastly, we have been announcing and are continuing our support for the WebOS platform.
In addition to this, choosing Qt for your embedded product is seldomly a UI-only decision. Qt provides many modules to implement your whole middleware layer. The Qt Interface Framework, previously known as Qt IVI, enables you to connect services and backends to your user interfaces with a clean separation between the backend and frontend logic. While historically it has had a strong focus on the automotive sector, we are now broadening the feature set towards embedded platforms in general and will highlight this in our examples and documentation as well.
Rarely, an embedded product is designed around one central UI application. Instead, modern designs allow for multiple applications to be managed. The Qt Wayland compositor, but also the Qt Application Manager will be of great help to you here.
In automotive, we are also expanding and improving our support for Android Automotive (both AAOS and GAS). Qt Android Automotive continues to integrate with various Android APIs to provide a better experience for developers. We are releasing, in tech preview, a new QML component that allows embedding third-party android activities within your Qt Android application. Moreover, we are actively working on providing easy-to-use APIs and components to interact with third-party music/video apps and read and interact with notifications within your Qt Android apps. Don’t forget to check our latest demo:
In some areas, safety is an important asset you need to consider in your stack. The Qt Safe Renderer allows for easy integration of safety-critical elements, being certified under ISO 26262. We will bring features like touch and multi-display support amongst other features later this year.
Accelerate the Design – Develop workflow
Qt is predominantly known and used for its capabilities to create a great graphical user experience and interfaces. So far the focus in this article has been on many (by far not all) elements around this. But of course, a significant portion of the investment is also happening in the overall graphics pipeline starting from RHI to render via any hardware acceleration up to high-level APIs for modern UI features and tooling for designers with Qt Design Studio.
Qt Quick 3D allows creating modern-looking applications and devices via a unique workflow. After the initial introduction in Qt 6.0, we have been adding many features like particles, instanced rendering, mesh morphing, etc. Qt 6.3 will bring real-time reflections, resource management APIs, and new effects. But we will not stop there.
Based on customer feedback, additional development will happen around physics integration and collision detection. We will improve our tooling around shader creation and rendering enhancements. Also, the engine gets further features regarding the analysis of your project to pinpoint potential bottlenecks and optimize the performance of your product.
All of those features will be surrounded by our additional tooling, for designers as well as developers.
There is so much more…
As initially mentioned, Qt covers a large spectrum of development projects and supports the framework with additional tooling for any aspect of the product creation.
There are so many more items, we wish we had the time to discuss further. For instance, we have not been talking about cloud connectivity. Generally, we aim to simplify the process of connecting your Qt applications to cloud solutions, as these days any product invention takes a connected-first approach. Everything is possible with Qt already, but we have some ideas on further simplifying the workflow. Individual items like finalizing our Qt HTTP Server, better Protocol Buffers, gRPC integration, etc deserve their own articles which we will publish in the future.
Neither did we have time today to discuss another angle of Qt, which is bindings and offering into other languages, like Qt for Python. Naturally, all mentioned features in this article are implicitly supported there as well. But also, we have some plans for how we can make the development feel more natural coming from the Python world. Python is getting more traction on embedded as well, and we are researching how Qt can be there right from the start.
Lastly, the Qt Company is also working on new products, which are adjacent to our core offering and help our users with their post-deployment setup. One example is the recently launched Qt Digital Advertising Platform.
You can see, Qt has lots of things to come and we are excited to go this route with you.
Subscribe to our newsletter
Try Qt 6.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.