Who should read this
Summary: Qt has served as the definitive C++ cross-platform UI framework for 30 years since its first release in 1995. As of March 2026, the latest version is Qt 6.11 and the current LTS is Qt 6.9. No competing framework matches its coverage: desktop apps, automotive IVI, industrial HMI, medical device UIs, and MCU-level embedded. This article covers Qt’s architecture, module structure, Widgets vs QML selection criteria, licensing, and a practical comparison with Electron, Flutter, .NET MAUI, Avalonia, and WPF.
This article is for developers or tech leads choosing a cross-platform desktop or embedded UI framework, or C++ developers already using Qt who want to understand its latest evolution.
Qt 6.x timeline: from 6.0 to 6.11
Since Qt 6.0 shipped in December 2020, the Qt Company has published feature releases on a roughly semi-annual cadence. Key milestones:
- Qt 6.2 LTS (2021) — First production-stable release of the Qt 6 series. Laid the foundation for migrating from Qt 5
- Qt 6.5 LTS (2023) — Qt Quick 3D improvements, introduction of Qt HttpServer, Qt gRPC/Protobuf modules
- Qt 6.8 (2024) — Qt Graphs module made official, XR (extended reality) support began
- Qt 6.9 LTS (2025) — Emoji rendering improvements, OAuth2 authentication enhancements, Qt Quick 3D transparency handling, SVG CSS animation, QML Language Server outline view, ContextMenu component added
- Qt 6.10 (late 2025) — Performance-focused release
- Qt 6.11 (March 2026) — Current latest. Rendering pipeline improvements and strengthened platform-native integration
Qt architecture: core module structure
Qt is not a single framework but a collection of modules. You can selectively link only the modules your project needs.
Core modules
- Qt Core — Event loop, signals/slots, meta-object system, strings, containers. Everything in Qt depends on this
- Qt GUI — Window system abstraction, OpenGL/Vulkan/Metal rendering backends, fonts, images
- Qt Widgets — Traditional desktop widgets. QPushButton, QTreeView, QMainWindow and more, providing native look and feel
- Qt Quick / QML — Declarative UI language (QML) + JavaScript runtime. Optimized for touch-based, animation-heavy UIs
- Qt Quick 3D — QML-based 3D rendering. Transparency handling improved in Qt 6.9
Special-purpose modules
- Qt for MCUs — Runs a QML subset on bare-metal microcontrollers. Targets Cortex-M class hardware
- Qt for Automotive (Qt IVI) — Built for automotive infotainment. Used in production vehicles by Mercedes-Benz, BMW, and others
- Qt 3D — A full 3D rendering engine. Used in CAD/CAM viewers, industrial simulations, and similar
- Qt Network / Qt WebSockets / Qt MQTT — Network protocol stack. Essential for IoT and industrial communication
Qt Widgets vs Qt Quick/QML: which to choose
This is the first fork you encounter when starting with Qt. Both stacks sit on the same Qt Core foundation, but their design philosophies diverge.
| Qt Widgets | Qt Quick / QML | |
|---|---|---|
| Language | C++ (+ Designer .ui files) | QML (declarative) + JavaScript + C++ backend |
| UI style | Platform-native look and feel | Custom-rendered (modern, animation-centric) |
| Rendering | CPU (QPainter) by default, OpenGL optional | GPU-accelerated (Scene Graph) by default |
| Best-fit domains | Desktop LOB apps, IDEs, admin tools | Embedded HMI, touch UIs, automotive IVI |
| Learning curve | Familiar to experienced C++ developers | Requires learning QML; easier designer collaboration |
| Ecosystem maturity | 20+ years, vast widget library | Growing, rapid improvements in Qt 6.x |
| Mixing possible | Embed QML via QQuickWidget | Call Widgets via QWidgetProxy |
Practical guidance: For internal admin tools or data-heavy desktop apps, Qt Widgets is the right fit. For automotive dashboards, smart-home panels, or medical-device touch UIs where visual customization is paramount, choose Qt Quick/QML.
Cross-platform reality: how far does it actually go?
Qt’s official supported-platform list is broad. But “official support” and “production-grade” are not the same thing.
- Windows (10/11) — First-class citizen. All modules fully supported. MSVC and MinGW build chains
- macOS — Stable. Apple Silicon native builds supported since Qt 6.2
- Linux (X11/Wayland) — Stable for both desktop and embedded. Embedded Linux is one of Qt’s core strengths
- Android / iOS — Qt Quick-based app deployment is possible, but app size is large compared to Flutter or native, and conforming to platform UI guidelines is difficult
- WebAssembly — Browser execution supported in Qt 6.x. Usable for demos and internal tools, but replacing a production web app is unrealistic
- RTOS / Bare Metal (MCU) — Limited QML support via Qt for MCUs. Integrates with FreeRTOS, Zephyr, and others
Licensing: what you must verify before a commercial project
Qt’s dual-license structure is the most frequently misunderstood aspect of framework selection.
Open-source licenses:
- LGPL v3 — Core modules including Qt Core, Qt GUI, and Qt Widgets. When used via dynamic linking (shared library), there is no obligation to open-source your own code. However, any modifications to Qt’s source code must be disclosed
- GPL v3 — Certain add-on modules including Qt Charts and Qt Data Visualization. GPL requires full source code disclosure
Commercial license:
- Per-device or per-developer-seat pricing. Effectively mandatory for mass-production embedded products
- Some features of Qt for MCUs and Qt for Automotive are commercial-only
Competitor comparison: where Qt wins and where it loses
| Qt | Electron | Flutter | .NET MAUI | Avalonia | WPF | |
|---|---|---|---|---|---|---|
| Language | C++ / QML | JavaScript / TS | Dart | C# / XAML | C# / AXAML | C# / XAML |
| Platforms | Win/Mac/Linux/Embedded/MCU | Win/Mac/Linux | Win/Mac/Linux/iOS/Android/Web | Win/Mac/iOS/Android | Win/Mac/Linux | Windows only |
| Performance | Native C++ | High memory usage | Skia GPU rendering, good | .NET runtime | Skia-based, good | .NET runtime |
| Embedded support | Best in class | Unrealistic | Limited | None | Linux embedded possible | None |
| Automotive / Industrial | Extensive production track record | Not suitable | Experimental | None | None | None |
| App size (baseline) | 15-30MB | 100MB+ | 15-25MB | 20-40MB | 15-30MB | Framework bundled |
| Development speed | Moderate (C++ nature) | Fast | Fast | Moderate | Moderate | Moderate |
| License | LGPL/GPL + Commercial | MIT | BSD | MIT | MIT | Bundled with .NET |
Positioning by framework
Electron — For building desktop apps quickly with web technologies (HTML/CSS/JS). VS Code, Slack, and Discord are flagship examples. Memory usage is high and app size is large, but the wide web-developer talent pool makes hiring easy. Qt and Electron overlap in “desktop apps,” but when performance requirements exist, Electron drops out.
Flutter — Google-backed cross-platform framework. Mobile-first but expanding to desktop and web. Dart as a language is a barrier to entry. Embedded support is community-level, making it unsuitable for automotive/industrial applications.
.NET MAUI — For cross-platform apps within the Microsoft ecosystem. The successor to Xamarin.Forms. Reasonable on Windows and mobile, but lacks Linux/embedded support.
Avalonia — An open-source cross-platform XAML framework inspired by WPF. A strong option for C# developers building Win/Mac/Linux desktop apps. Embedded/automotive penetration remains limited.
WPF — Windows-only but still formidable for enterprise desktop. Overlaps with Qt Widgets in positioning, but is tied to the .NET ecosystem.
When Qt is the right choice and when it is not
Choose Qt when
- Embedded Linux HMI — Automotive IVI, industrial equipment touch panels, smart-home devices. Qt is the de facto standard here
- MCU-based UI — Graphical UIs running on FreeRTOS/Zephyr. There are almost no alternatives to Qt for MCUs
- Integration with C++ codebases — When you need to put a UI on top of existing C++ business logic or libraries
- High-performance desktop apps — 3D viewers, CAD, audio/video editing, and other cases requiring GPU acceleration and native performance
- Regulated industry certification — Products requiring medical device (IEC 62304) or automotive (ISO 26262) certification. Qt’s production track record is an advantage in certification processes
Qt is not the right fit when
- Web apps or SPAs — React/Next.js is the answer. Qt for WebAssembly is for demos, not production web apps
- Mobile-first apps — Flutter or Kotlin/Swift is the realistic choice
- Rapid prototyping — Electron or Flutter are faster to start with. Verify that the time spent on C++/QML setup is justified
- Small team with a tight budget — Commercial license costs and C++ developer rates make the total cost of ownership high
Conclusion: Qt is niche, but irreplaceable in its domain
Qt’s position in 2026 can be summarized in one sentence: Its appeal as a general-purpose app framework has diminished, but its dominance in embedded, automotive, and industrial UI remains intact. For desktop-only apps, the decision involves comparing against Electron, Flutter, Avalonia, and others. But for mass-production embedded products, Qt should be the first framework evaluated.
Design your architecture around Qt 6.9 LTS and Qt 6.11, but verify the licensing structure before starting the project. Beginning development without understanding the LGPL dynamic-linking requirements will result in a later cost: purchasing a commercial license or restructuring your code.
Further reading
- Programming Language Comparison 2026: A Selection Guide by Strengths, Performance, and Use Case — Positioning of Qt-related languages including C++, C#, and Rust
- Modern WPF Architecture 2026: A Practical Guide Beyond Legacy — The WPF modernization strategy, a natural counterpart to Qt Widgets