La société Qt Company a publié la sortie du framework Qt 6.8, poursuivant son travail sur la stabilisation et l'élargissement des fonctionnalités de la branche Qt 6. La version Qt 6.8 apporte un support pour les plateformes Windows 10+, macOS 12+, Linux (Ubuntu 22.04/24.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS et QNX. Les codes sources des composants Qt sont fournis sous les licences LGPLv3 et GPLv2.
Qt 6.8 a obtenu le statut de version LTS, pour laquelle des mises à jour seront générées pendant cinq ans pour les détenteurs de licences commerciales, soit deux ans de plus que pour les versions LTS précédentes. Pour les utilisateurs non commerciaux, la durée de support sera de six mois (jusqu'à la sortie d'une nouvelle version majeure). Le support de l'ancienne branche LTS Qt 6.5 se poursuivra jusqu'en mai 2026, tandis que le support de la branche LTS Qt 6.2 a été interrompu le 30 septembre 2024. La branche Qt 5.15 sera maintenue jusqu'en mai 2025.
Principales modifications de Qt 6.8 :
- Le module Qt Graphs, dédié à la création de divers types de graphiques 2D et 3D ainsi qu'à la visualisation de grandes collections de données changeantes rapidement, a été stabilisé et est désormais complètement pris en charge. Ce module est en développement comme un remplacement universel des anciens modules Qt DataVisualization, liés à OpenGL, et Qt Charts. Le nouveau module utilise Qt Quick 3D et le moteur de rendu RHI (Rendering Hardware Interface), qui prend en charge divers API 3D (OpenGL, Vulkan, Metal et Direct 3D).
Comparé à la version précédente, Qt Graphs 3D a bénéficié d'optimisations de performance, un support pour la transparence dans les graphiques 3D (Bars3D) a été ajouté, ainsi que des fonctionnalités étendues pour le contrôle de la position et du formatage des étiquettes et des en-têtes, ainsi qu'une amélioration du rendu des lignes de la grille de navigation. Dans Qt Graphs 2D, il est maintenant possible de dessiner ses propres types de graphiques à barres (via des composants QML), le support des graphiques à barres empilées a été ajouté, et les outils d'affichage des étiquettes ont été étendus. L'API a été unifiée pour l'utilisation des thèmes dans les graphiques 2D et 3D. Les appels spécifiques aux widgets ont été transférés dans le module Qt Graphs Widgets.
- Stabilisé et passé dans la catégorie des modules entièrement pris en charge, le module QtHttpServer permet d'intégrer la fonctionnalité de serveur HTTP dans les applications, prenant en charge HTTP/1.1, TLS/HTTPS, WebSockets, le traitement des erreurs, la routage des demandes en fonction des paramètres dans l'URL (QHttpServerRouter) et l'API REST. Par rapport à la version précédente, la classe QNetworkAccessManager a été mise à jour pour permettre l'envoi de requêtes HTTP via un socket local. Un support pour la classe QFormDataBuilder a été fourni pour simplifier le transfert de plusieurs ensembles de données (par exemple, des données textuelles et un fichier joint) dans une seule requête HTTP (HTTP multi-part).
- Stabilisé et passé dans la catégorie des modules entièrement pris en charge, le module Qt GRPC permet d'accéder aux services via le protocole gRPC.
- Stabilisé et passé dans la catégorie des modules entièrement pris en charge, le module Qt Protobuf est destiné à la sérialisation des classes Qt en utilisant le protocole Protocol Buffer.
- Ajout de la prise en charge des plateformes mobiles Android 14 et iOS 18.
- Offre la possibilité de développer des applications pour les systèmes de bureau Linux et Windows avec des processeurs ARM, ainsi que pour les casques 3D Apple Vision Pro et Meta Quest 3 XR.
- Ajout du support pour Raspberry Pi 5, NVIDIA AGX Orin et certaines cartes basées sur SoC NXP, Toradex et STM. Prise en charge des cartes RISC-V StarFive VisionFive 2 ajoutée.
- Les possibilités de création de versions réduites de Qt, pouvant être utilisées sur des appareils à faible mémoire, ont été élargies. Par exemple, en désactivant les fonctionnalités et composants Qt non utilisés, il est possible de réduire la taille du paquet dans le stockage permanent de 77 % et de diminuer la consommation de RAM de 32 %, tout en réduisant considérablement le temps de démarrage.
- Dans le module Qt Multimedia sur la plateforme Linux, la prise en charge de la capture d'écran a été réalisée à l'aide de la classe QScreenCapture dans les environnements basés sur le protocole Wayland, en utilisant le service ScreenCast et le système de portails XDG Desktop. Des classes QVideoFrameInput, QAbstractVideoBuffer et QAudioBufferInput ont été ajoutées, permettant d'organiser l'envoi de données multimédias personnalisées dans une session d'enregistrement (QMediaCaptureSession), ainsi que la classe QAudioBufferOutput pour connecter les gestionnaires qui reçoivent des données sonores après décodage.
- Ajout du module Qt Quick Vector Image, permettant d'intégrer des images vectorielles au format SVG dans les scènes Qt Quick, ce qui peut être utilisé, par exemple, pour créer des éléments d'interface évolutifs, indépendants de la résolution et de la taille de l'écran.

- Ajout du module Qt Quick 3D XR pour créer des applications pour les plateformes de réalité virtuelle et augmentée, en utilisant les technologies Qt Quick 3D. Pour organiser l'interaction avec des environnements tridimensionnels créés à l'aide de Qt Quick 3D, la prise en charge des dispositifs de suivi des mouvements des mains et des contrôleurs VR est mise en œuvre. Les lunettes Apple VisionPro ou les casques 3D prenant en charge la norme OpenXR, tels que Meta Quest 2/3, peuvent être utilisés pour la visualisation.

- Des optimisations ont été ajoutées dans Qt Quick, accélérant le rendu de scènes complexes. Dans la classe TableView, la possibilité de déplacer des colonnes et des lignes a été introduite. Les types Image et BorderImage prennent en charge le chargement asynchrone d'images (l'ancienne image reste affichée pendant le chargement de la nouvelle).
- Le module Qt Quick Effect Maker prend désormais en charge l'animation des sprites, la déformation des éléments en cercle, ainsi que l'utilisation d'effets de lueur et de flou sélectif (masked blur).
- Dans le module Qt Quick Shapes, il est désormais permis d'utiliser tout fournisseur de textures pour le remplissage de contours dans des éléments de type ShapePath. De nouvelles méthodes pour gérer le traitement des textures ont été ajoutées à la classe QQuickRenderTarget, simplifiant ainsi l'intégration de Qt Quick 3D avec des moteurs externes, des frameworks et des API.
- Dans Qt Quick Controls, un nouveau style Fluent WinUI3 a été proposé, permettant de créer une interface ressemblant à Windows 11 sur n'importe quelle plateforme. Sur macOS, la possibilité d'utiliser le menu global fourni par la plateforme dans les interfaces créées avec Quick MenuBar a été mise en œuvre.

- Dans Qt Quick 3D, le rendu des ombres a été amélioré grâce à l'utilisation de cartes d'ombres en cascade et à un filtrage doux des ombres. De nouvelles propriétés ont été ajoutées au type PrincipledMaterial. Il est possible d'utiliser dans ses propres matériaux les mêmes propriétés que dans les matériaux basés sur le type PrincipledMaterial.

- Dans le module Qt Network Auth, la classe QOAuthUriSchemeReplyHandler a été ajoutée pour créer des gestionnaires de redirection vers une autre schéma URI lors de l'authentification à l'aide d'OAuth 2.0. La classe QOAuth2AuthorizationCodeFlow a été dotée de la prise en charge de l'extension OAuth PKCE (Proof Key for Code Exchange).
- La classe QDnsLookup a été améliorée en ajoutant la possibilité d'envoyer des requêtes en utilisant « DNS over TLS », prenant en charge les enregistrements DNS TLSA (TLS Certificate Association) et informant le client de la vérification des données par le serveur DNS.
- Qt Core a introduit la classe QChronoTimer qui encapsule la bibliothèque std::chrono, permettant d'améliorer la précision des opérations temporelles. La possibilité de modifier la taille de QString, QByteArray et QList sans initialiser les données a été ajoutée. QHash prend désormais en charge le stockage de données avec les types QString et QStringView dans un seul hash. QDirListing offre une API basée sur un itérateur pour parcourir le contenu des répertoires.
- Qt GUI propose désormais la possibilité de réinitialiser les paramètres du schéma de couleur système, comme le choix du mode sombre ou clair, ainsi que des paramètres d'action qui appellent le menu contextuel.
- Dans Qt Sql, les pilotes de bases de données PostgreSQL et MySQL/MariaDB gèrent désormais correctement les heures et dates lorsque le client et le serveur sélectionnent des fuseaux horaires différents. le serveur sont sélectionnés.
- Qt WebEngine a introduit de nouvelles classes : QWebEngineFrame pour travailler au niveau de blocs iframe individuels ; QWebEngineClientHints pour gérer l'identification du navigateur ; QWebEnginePermission pour gérer les droits d'accès liés aux sites.
- Qt Widgets a amélioré le rendu des widgets sur les écrans à haute densité de pixels (high-DPI).
- Le générateur de documentation QDoc a été transféré de l'API C à l'API C++ et nécessite désormais au moins Clang 17 pour fonctionner. De nouvelles commandes, telles que « \keyword » et « \nativetype », ont été ajoutées.
- Dans le cadre des efforts pour améliorer la stabilité et les performances de la version LTS, plus de 500 corrections et optimisations ont été apportées.
Source : opennet.ru




