Qt 6.0 prend en charge :
- Windows 10
- macOS 10.14 et les versions plus récentes
- Linux (Ubuntu 20.04, CentOS 8.1, OpenSuSE 15.1)
- iOS 13 et les versions plus récentes
- Android (à partir du niveau d'API 23)
Du côté embarqué, Qt 6 prend en charge une large gamme de périphériques embarqués exécutant Linux. Qt 6 ne prend encore en charge aucun des systèmes d'exploitation temps réel embarqués pris en charge dans Qt 5.
Dans un billet de blog, Lars Knoll de Qt a déclaré :
« Qt 5 a été un succès fantastique au fil des ans, et nous avons vu une énorme croissance de notre base d'utilisateurs et de l'utilisation de Qt sur huit ans depuis la sortie de Qt 5.0. Mais le monde a subi des changements importants depuis 2012. L'utilisation de Qt dans les systèmes embarqués a explosé, le C ++ a évolué et de nouvelles API graphiques 3D ont vu le jour. Ce sont des exemples de facteurs qui ont directement affecté Qt.
« En tant que framework multiplateforme, Qt doit s'adapter à ces exigences changeantes. Nous avons réussi à nous adapter très bien à bon nombre de ces exigences pendant la durée de vie de Qt 5. Cependant, le maintien de la pleine compatibilité source et binaire dans la série Qt 5 a rendu certaines choses impossibles à corriger pendant sa durée de vie. Avec Qt 6, nous avons maintenant la possibilité de faire des changements et de construire Qt pour qu'il soit mieux adapté pour les années à venir.
« Ainsi, la mission de Qt 6 est de permettre à Qt d'être la plateforme de productivité du futur. Qt 6.0, en tant que version majeure de Qt, nous a donné un plus grand degré de liberté pour implémenter de nouvelles fonctionnalités et une meilleure prise en charge des besoins d'aujourd'hui et de demain. Qt 6.0 est une continuation de la série Qt 5, et nous nous sommes concentrés sur la non-interruption de la migration pour les utilisateurs.
« Lors de la création de Qt 6, nous nous sommes assurés que les valeurs fondamentales de Qt étaient respectées et respectées, notamment:
- Sa nature multiplateforme, permettant aux utilisateurs de déployer leurs applications sur toutes les plateformes desktop, mobiles et intégrées en utilisant une technologie et à partir d'une seule base de code.
- Son évolutivité, des appareils bas de gamme à usage unique aux applications de bureau complexes haut de gamme ou au système connecté.
- Ses API, ses outils et sa documentation, simplifiant la création d'applications et d'appareils.
- Sa maintenabilité, sa stabilité et sa compatibilité, permettant aux utilisateurs de maintenir de grandes bases de code avec un minimum d'effort.
- Son vaste écosystème de développeurs avec plus de 1,5 million d'utilisateurs.
« Qt 6.0 est la première version de la série Qt 6 répondant aux nouvelles demandes du marché tout en gardant les valeurs fondamentales au cœur de ce que nous faisons ».
Passons en revue certaines fonctionnalités.
C++17
« Avec Qt 6, nous avons maintenant besoin d'un compilateur compatible C++ 17 permettant l'utilisation de constructions de langage C++ plus modernes lors du développement de Qt et permettant également des points d'intégration côté API ».
Bibliothèques et API principales
Beaucoup de travail a été consacré à Qt Core, car c'est le module qui implémente les parties les plus centrales de Qt. L'équipe a parcouru de nombreux domaines et apporté des améliorations. En voici quelques-uns :
- Le nouveau système de propriétés et de liaisons : Ce système apporte désormais le concept de liaisons qui ont contribué au succès de QML dans Qt 5 disponible à partir de C ++.
- Chaînes et Unicode: Avec Qt 5, l'équipe a commencé à aligner Qt entièrement avec Unicode, où elle a effectué une grande partie du travail.
- QMetaType et QVariant sont fondamentaux pour le fonctionnement du système de métaobjets Qt. Les signaux et les emplacements ne seraient pas possibles sans QMetaType et QVariant est requis pour les appels dynamiques. Ces deux classes ont été réécrites presque complètement avec Qt 6.
D'autres parties de Qt qui ne sont pas liées aux graphiques ont également subi de grands changements. Par exemple, Qt Concurrent a subi une réécriture presque complète et rend désormais le développement d'applications multithreads plus simple que jamais. Qt Network a connu de nombreux nettoyages et améliorations.
Nouvelle architecture graphique
L'architecture graphique de Qt 5 dépendait beaucoup d'OpenGL en tant qu'API graphique 3D sous-jacente. Alors que c'était la bonne approche en 2012 lorsque Qt 5 a été mis sur pied, le marché a considérablement changé au cours des deux dernières années avec l'introduction de Metal et Vulkan. Il existe désormais un grand ensemble d'API graphiques différentes qui sont couramment utilisées sur différentes plateformes. Pour Qt en tant que framework multiplateforme, cela signifiait bien sûr qu'il fallait s'adapter à la nouvelle réalité du marché ; s'assurer que les utilisateurs puissent exécuter Qt sur chacun d'eux avec des performances maximales.
Ainsi, alors que Qt 5 s'appuyait sur OpenGL pour les graphiques accélérés par le matériel, la donne change complètement avec Qt 6. Tous les graphiques 3D dans Qt Quick sont maintenant construits sur une nouvelle couche d'abstraction pour les graphiques 3D appelée RHI (Rendering Hardware Interface). RHI permet à Qt d'utiliser l'API graphique 3D native du système d'exploitation / plateforme sous-jacent. Ainsi, Qt Quick utilisera désormais Direct3D sous Windows et Metal sous macOS par défaut.
Les classes spécifiques à OpenGL dans Qt existent toujours, mais ont été enlevées de QtGui dans le module QtOpenGL. Qt 6 dispose également d'un nouveau module appelé QtShaderTools pour gérer les différents langages d'ombrage de ces API de manière multiplateforme.
Qt Quick 3D et Qt 3D
Qt Quick 3D est un module relativement nouveau. Il étend de manière transparente Qt Quick avec des capacités 3D. Avec Qt Quick 3D, l'objectif est de créer une API aussi facile à utiliser que les parties existantes de Qt Quick (pour les interfaces utilisateur 2D) tout en offrant un support complet pour la création de scènes 3D complexes. L'objectif principal de cet effort a été de permettre une intégration transparente entre le contenu 2D et 3D.
Ce module a connu des améliorations significatives avec Qt 6 qu'il n'aurait pas été possible de réaliser dans la série Qt 5. Plus important encore, il s'appuie désormais sur la couche d'abstraction RHI pour utiliser de manière optimale l'API graphique et le matériel sous-jacents. De plus, il propose une intégration beaucoup plus profonde et plus performante entre le contenu 2D et 3D, vous permettant de placer des éléments 2D dans une scène 3D. Il a également considérablement amélioré la prise en charge de glTF2 et du rendu basé sur la physique, ce qui simplifie l'importation d'actifs créés dans d'autres outils de conception. Il existe de nombreuses autres améliorations majeures dans le module.
Interfaçage avec des fonctionnalités spécifiques à la plateforme
Bien que Qt offre la plupart des fonctionnalités requises pour développer votre application indépendamment de la plateforme, il est parfois nécessaire de s'interfacer avec des fonctionnalités spécifiques à la plateforme. Dans Qt 5, l'équipe a fourni un ensemble de modules complémentaires (QtX11Extras, QtWinExtras, QtMacExtras) pour vous aider dans ce but. Mais cette séparation complète du reste de Qt a conduit à quelques problèmes architecturaux, d'incohérences et de duplication de code dans Qt. Dans Qt 6, cette approche a été repensée pour simplifier l'interfaçage avec les API spécifiques au système d'exploitation / plateforme.
Source : blog Qt