La version 6.7 de Qt est disponible avec de nombreuses améliorations, pour construire des applications modernes et une meilleure expérience utilisateur.
Qt 6.7 est disponible avec de nombreuses améliorations, petites et grandes, pour tous ceux qui aiment s'amuser en construisant des applications modernes et des expériences utilisateur. Plusieurs ajouts sont publiés en tant qu'aperçus technologiques pour pouvoir préparer la prochaine version LTS !
Découvrez les points forts ici :
Utiliser C++20 avec Qt
C++20 est encore en option et expérimental pour de nombreuses chaînes d'outils de compilation, et pour le moment, il n'y a aucune raison d'exiger C++20 pour construire ou utiliser Qt. Cependant, les utilisateurs peuvent utiliser le nouveau standard autant qu'ils le souhaitent dans leur propre code. Certains des changements apportés entre C++17 et C++20 pourraient nécessiter des ajustements au code existant, et ils ont nécessité des ajustements dans Qt. Pour Qt 6.7, l'équipe en charge a continué à faire des adaptations qui permettent à Qt de se sentir comme une partie naturelle d'une pile C++ moderne.
Un ajout utile au langage C++20 est l'opérateur de comparaison à trois voies<=>(), également connu sous le nom d'opérateur "vaisseau spatial". Lors de l'implémentation de cet opérateur, les types doivent spécifier leur catégorie d'ordre. Dans Qt 6.7, il a été ajouté les classes Qt::{strong,weak,partial}_ordering comme implémentations compatibles avec le C++17 des types std::*_ordering respectifs. Pour les auteurs de types, Qt 6.7 fournit des macros d'aide qui peuvent être utilisées pour implémenter les opérateurs relationnels. Ces macros s'étendront à operator<=>() dans les versions C++20, et reviendront aux six opérateurs dans les versions C++17.
Un ajout utile à la bibliothèque standard en C++20 et mis à la disposition des utilisateurs de Qt est std::span. En tant que représentation non propriétaire d'une séquence contiguë d'objets, un span est peu coûteux à construire et à passer par des appels de fonction, et avec QSpan il y a maintenant une implémentation C++17 de ce type.
L'équipe a également continué à ajouter le support de std::chrono aux API Qt concernées. Les délais de transfert dans les API de Qt Network peuvent maintenant être spécifiés en tant que types et littéraux std::chrono, tels que 5s pour 5 secondes.
Qt Graphs avec prise en charge des visualisations 2D et 3D
Dans Qt 6.6, il a été présenté un premier aperçu technologique de Qt Graphs en tant que cadre moderne de Qt 6 pour la visualisation de données sur une architecture de rendu accélérée par le matériel.
Qt 6.7 ajoute la prise en charge des graphiques à barres, linéaires et de dispersion en 2D, en plus des visualisations en 3D déjà disponibles depuis Qt 6.6. Le module s'intègre aux animations et aux effets de Qt Quick et fournit des API d'interaction basées sur des thèmes et des gestionnaires.
Qt Graphs est toujours en développement actif et continue d'être un aperçu technologique pour cette version. Il a été apporté des améliorations substantielles à l'API et à l'architecture des données afin de réduire la quantité d'allocations de mémoire et de s'intégrer de manière cohérente au modèle d'éléments abstraits de Qt. L'équipe prévoit d'autres améliorations de l'architecture et de l'API avant de sortir de l'aperçu technologique pour Qt 6.8 LTS.
Connectivité, protocoles et architectures distribuées
Les développeurs de systèmes distribués peuvent désormais travailler plus efficacement avec les API HTTP et REST grâce à l'introduction de QHttpHeaders, QRestAccessManager et QRestReply en tant que nouvelles classes pour les cas d'utilisation spécifiques à REST.
Qt gRPC a introduit de nouvelles classes pour le client, le serveur ou les appels bidirectionnels en continu, permettant une messagerie transparente qui se déclenche automatiquement sur les changements de valeur. La nouvelle API Interceptor permet d'ajouter des fonctions de rappel pour des messages gRPC sélectionnés, par exemple pour mettre en œuvre la mise en cache ou la journalisation. Avec Qt Protobuf dans Qt 6.7, les développeurs peuvent maintenant sérialiser les messages Protobuf vers et depuis JSON, et bénéficier des améliorations du générateur qui prend en charge les champs optionnels et préserve la casse des valeurs d'énumération.
Ces nouvelles fonctionnalités permettent aux développeurs de créer plus facilement des applications robustes et évolutives avec Qt. Qt gRPC et Qt Protobuf sortiront de l'aperçu technologique dans la version 6.8 de Qt, lorsque le travail pour compléter la prise en charge de HTTP/2 aura été achevé.
Graphiques vectoriels
Depuis son introduction, Qt SVG a supporté les caractéristiques statiques du profil SVG 1.2 Tiny. Ce profil particulier est devenu de moins en moins pertinent au cours des dernières années, et les outils de création n'ont pendant longtemps pas suivi de profil spécifique. Pour Qt 6.7, l'équipe a analysé les éléments statiques de SVG 1.1 et 2.0 qui sont couramment utilisés dans les ressources SVG, et a ajouté la prise en charge des éléments rencontrés le plus fréquemment : <symbol>, <marker>, <pattern>, <mask> et les divers éléments <filter>. Avec Qt SVG dans la version 6.7, les applications peuvent rendre la majorité des fichiers SVG pertinents pour les concepteurs d'interface utilisateur.
Si un support complet de SVG 2.0 est nécessaire, le module Qt WebEngine continue d'être le bon choix.
En plus d'importer les SVG sous forme de pixmaps pré-rendus dans les interfaces utilisateur de Qt, l'équipe a travaillé également sur l'importation de graphiques vectoriels directement dans le graphe de scène de Qt Quick. Le nouvel outil (expérimental) svgtoqml convertit les SVG en QML, et l'équipe a apporté des améliorations au module Qt Quick Shapes pour un rendu de meilleure qualité. Le moteur de rendu de courbes introduit comme aperçu technologique dans Qt 6.6 est maintenant entièrement supporté, et peut être activé en utilisant la propriété preferredRendererType.
Améliorations des polices et des icônes
Après avoir introduit la prise en charge des caractéristiques des polices typographiques dans Qt 6.6, l'équipe a poursuivi avec la prise en charge des polices variables dans Qt 6.7. Les polices variables combinent des variations d'une seule police de caractères dans un seul fichier de police, ce qui permet aux applications de sélectionner n'importe quelle valeur de "poids" ou de "cursivité". En fonction des axes variables créés par le concepteur de la police, un glyphe peut être animé ou présenter différentes couches.
L'API est désormais stable et utilise de manière cohérente la nouvelle classe QFont::Tag pour spécifier les caractéristiques des polices et les noms des axes de manière sûre.
L'amélioration de la prise en charge des polices modernes a permis d'ajouter la prise en charge des bibliothèques d'icônes natives, qui sont souvent fournies par les polices. L'implémentation de QIcon::fromTheme fait désormais correspondre le nom de l'icône XDG au symbole correspondant dans les bibliothèques d'icônes natives sur les plateformes Apple, Windows et Android. À l'avenir, il est prévu d'utiliser les nouvelles capacités de l'API de polices pour ajouter la prise en charge d'autres caractéristiques d'icônes, telles que les versions soulignées ou remplies d'une icône.
Applications hybrides avec éléments d'interface utilisateur et rendu natifs
Sur les plateformes de bureau et mobiles, les applications doivent souvent combiner des éléments d'interface utilisateur provenant de technologies et de cadres différents. Qt utilise et s'intègre étroitement aux technologies natives de chaque plateforme pour créer des éléments d'interface utilisateur de base tels que les fenêtres, et il a longtemps été possible d'utiliser des éléments d'interface utilisateur provenant d'autres frameworks dans une application Qt Widgets.
Avec Qt 6.7, l'équipe a ajouté la prise en charge de l'intégration de fenêtres natives dans une scène Qt Quick. Cela permet d'utiliser des contrôles natifs tels que MapView d'AppKit ou un lecteur multimédia Windows à l'intérieur d'une interface utilisateur Qt Quick, avec un positionnement et un empilement corrects. En superposant les fenêtres, les éléments de l'interface Qt Quick peuvent également être superposés aux composants natifs.
En outre, les applications peuvent désormais ajouter du code de rendu, en utilisant n'importe quelle API graphique prise en charge par Qt, à une application Qt Quick ou Qt Widgets, en utilisant les classes QRhiQuickItem et QRhiWidget, respectivement. Bien qu'un tel code ne soit souvent pas totalement multiplateforme (car Vulkan, OpenGL, Direct3D, ou Metal ne sont pas pris en charge de la même manière sur toutes les plateformes cibles possibles), il permet d'intégrer des frameworks tiers qui utilisent ces technologies, ou d'écrire un code de rendu hautement optimisé pour toute plateforme spécifique.
Mise à jour du support des plateformes
Comme pour chaque version mineure, une mise à jour de la liste des plateformes supportées est publiée pour inclure les dernières versions stables des systèmes d'exploitation concernés. Sur desktop et mobile, Qt 6.7 supporte pleinement macOS 14 et iOS 17, Windows 11 23H2, et Android 14. RedHat 9.2, Open Suse 5.15, SUSE Linux Enterprise Server 15 sont les dernières distributions Linux prises en charge (Ubuntu reste sur 22.04). Des binaires préconstruits pour Windows utilisant la chaîne d'outils MinGW basée sur LLVM sont disponibles à partir du programme d'installation, et Windows et Linux sur ARM sont tous deux disponibles en tant qu'aperçu technologique.
Pour les systèmes embarqués, les images de référence Boot2Qt prennent en charge Yocto 4.3 Nanbield. En ce qui concerne les systèmes d'exploitation en temps réel, Qt 6.7 inclut désormais un aperçu technologique (source uniquement) pour VxWorks 7 utilisant SR 24.03 sur du matériel iMX6, et des binaires préconstruits pour QNX 7.1 sont disponibles à partir de l'installateur en ligne.
Exemples et démonstrations nouveaux et améliorés
En plus des améliorations apportées au framework, l'équipe a mis à jour les exemples et les applications de démonstration livrés avec Qt, et rafraîchi l'interface utilisateur et le style de codage. Ils ont également créé quelques nouvelles applications qui montrent ce qui est possible lorsque les concepteurs et les développeurs travaillent ensemble pour combiner les capacités d'interface utilisateur, de visualisation et d'arrière-plan de Qt.
L'exemple Lightning Viewer utilise Qt Location et Qt Quick Controls pour visualiser des données de foudre simulées, reçues via Qt WebSocket. Le style des contrôles a été entièrement créé dans Figma.
L'exemple StocQt, entièrement recréé, utilise Qt Graphs pour visualiser des données boursières basées sur le NASDAQ-100. L'interface utilisateur de l'exemple a été créée à l'aide de Qt Design Studio, et si une clé API est fournie dans la boîte de dialogue des paramètres, les données sont des informations en temps réel telles qu'elles sont reçues du service Financial Modeling Prep.
Le nouvel exemple OSM Buildings combine Qt Quick 3D avec Qt Positioning et Qt Network pour mettre en œuvre une visionneuse 3D des données cartographiques des bâtiments telles qu'elles sont reçues du service OpenStreetMap.
Les assistants virtuels sont de plus en plus populaires dans les interfaces utilisateur, et le nouvel exemple d'assistant virtuel montre à quel point il est facile de donner vie à un modèle 3D grâce à des animations temporelles.
Enfin, le nouvel exemple de rendu volumétrique utilise la nouvelle prise en charge des textures 3D dans Qt Quick 3D pour mettre en œuvre la projection de rayons volumétriques.
Qt pour Python
Une fois que de nouvelles fonctionnalités sont ajoutées à Qt, l'offre Python doit les adapter afin de les rendre accessibles aux utilisateurs Python. En plus de ce qui est décrit ici, de nombreux autres changements ont été apportés à PySide et Shiboken.
Source : Annonce de Qt 6.7
Et vous ?
Quel est votre avis sur ces améliorations ?
Voir aussi :
La version 6.6 de Qt est désormais disponible, et s'accompagne de nouvelles fonctionnalités pour une expérience de développement plus productive
Petite présentation de Qt à l'usage des Pascaliens (Delphi/Lazarus), une comparaison critique de HTML-Dev
Qt Creator 12 est désormais disponible avec l'intégration du compilateur interactif Compiler Explorer et le débogage pour l'exécution de scripts de compilation CMake 3.27
Partager