Qt 6.8 LTS est disponible et prend en charge de nouvelles plateformes de bureau, mobiles et embarquées, cette version se concentre sur l'amélioration et la stabilisation des fonctionnalités existantes.

Qt 6.8 LTS est disponible et prend en charge de nouvelles plates-formes de bureau, mobiles et embarquées, apportant des centaines d'améliorations et de nouvelles fonctionnalités passionnantes pour améliorer votre expérience de développement et répondre aux besoins d'applications exigeantes.

Cette version se concentre sur l'amélioration et la stabilisation des fonctionnalités existantes. Avec plus de 500 corrections de bogues et améliorations de performance depuis Qt 6.7, votre code existant fonctionnera mieux sans changer une seule ligne. Sur macOS, les applications Qt Quick s'intègrent désormais à la barre de menu native, et pour un look Windows 11 natif, elles peuvent utiliser le nouveau style Fluent. Le redimensionnement des fenêtres Quick est plus rapide sur macOS avec Qt 6.8, et sur Windows, le temps de démarrage de l'application a été amélioré en changeant la base de données de polices par défaut pour DirectWrite.

Plusieurs modules qui faisaient l'objet d'un aperçu technologique ont été complétés : Qt Graphs, Qt HttpServer, et Qt GRPC sont promus pour être pleinement supportés à partir de cette version.

Pour les utilisateurs commerciaux, Qt 6.8 est supporté à long terme, et avec cette version, il passe de 3 ans à 5 ans de support et de maintenance. En outre, cette version aide les créateurs de produits logiciels à se conformer aux prochaines réglementations de la loi sur la cyber-résilience dans l'Union européenne en fournissant des documents de nomenclature logicielle (SBOM) pour les bibliothèques Qt au format SPDX v2.3, avec les informations nécessaires pour améliorer la sécurité des logiciels.


Déploiement sur de nouvelles plateformes, architectures et appareils

En passant à Qt 6.8, vous pouvez mettre votre application mobile existante à la disposition des utilisateurs d'iOS 18 ou d'Android 14.

Le développement pour Windows on Arm est désormais entièrement pris en charge, ce qui permet aux utilisateurs de cibler les nouveaux PC Microsoft CoPilot+ lancés cette année. Votre application de bureau peut être déployée sur macOS 15, ainsi que sur les ordinateurs de bureau Linux on Arm. Cela complète la prise en charge par Qt de l'architecture Arm dans toutes les catégories d'appareils, de l'embarqué au mobile et à l'ordinateur de bureau.

Dans une toute nouvelle catégorie d'appareils, vous pouvez désormais créer des applications et des expériences utilisateur pour les casques Apple Vision Pro et Meta Quest 3 XR. Pour les créateurs d'appareils, cette version ajoute le support pour Raspberry Pi 5 et NVIDIA AGX Orin, ainsi qu'un certain nombre de SoC des partenaires technologiques NXP, Toradex et STM. Avec le StarFive VisionFive 2, Qt 6.8 prend en charge un ordinateur monocarte basé sur la nouvelle et de plus en plus populaire plateforme RISC-V.


Construire des applications Qt plus petites et plus légères

Avec les options de configuration de Qt 6.8, les développeurs peuvent affiner Qt pour la performance et l'efficacité, en répondant précisément aux besoins spécifiques de leurs applications. En supprimant les fonctionnalités et les composants inutilisés du framework Qt, les applications peuvent réduire l'utilisation de la ROM jusqu'à 77 %, diminuer la consommation de RAM de 32 % et se lancer beaucoup plus rapidement.


Qt Graphs : Prise en charge complète de la visualisation de données en 3D

Avec Qt 6.8, Qt Graphs est maintenant entièrement pris en charge, offrant aux développeurs une boîte à outils puissante pour créer des visualisations interactives et dynamiques en 2D et 3D. Que vous travailliez sur des simulations scientifiques, des graphiques financiers ou des analyses de données en temps réel, Qt Graphs fournit les capacités de rendu et les optimisations de performances nécessaires pour donner vie à vos données.

Qt Graphs 3D prend désormais en charge la transparence dans les Bars3D, et offre davantage de contrôle sur les marges des étiquettes, les positions des titres et le rendu des lignes de la grille. Qt Graphs 2D peut rendre des barres personnalisées à l'aide de composants QML, supporte les barres empilées et StackedPercent, peut afficher des étiquettes sur les barres et des titres sur les axes, et dispose de plus d'API de mappage de données.

Cette version unifie l'API de thématisation pour les graphiques 2D et 3D, et déplacé les API spécifiques à Qt Widgets dans un module Qt Graphs Widgets séparé, de sorte que les applications purement Qt Quick n'ont plus besoin de se lier à Qt Widgets.

Nom : 1.jpg
Affichages : 8780
Taille : 71,6 Ko

Qt Multimedia : Post-traitement personnalisé des données et de l'audio

Qt Multimedia a été une pierre angulaire pour la construction d'applications riches en médias, et dans Qt 6.8, il est rendu encore meilleur. Avec QVideoFrameInput, QAbstractVideoBuffer et QAudioBufferInput, les applications peuvent envoyer des données multimédia personnalisées dans une session d'enregistrement, et avec QAudioBufferOutput, des données audio décodées peuvent être reçues pour le post-traitement.

Sur les ordinateurs de bureau Linux, QScreenCapture prend désormais en charge le compositeur Wayland, en utilisant le service ScreenCast via le portail XDG Desktop.


Qt Quick : plus d'effets et des graphiques vectoriels évolutifs

Qt Quick continue d'être un module de choix pour construire des interfaces utilisateur rapides et fluides. Qt 6.8 apporte plusieurs optimisations de performance pour améliorer la vitesse de rendu, en particulier pour les scènes complexes. Le créateur d'effets de Qt Quick a appris ce qu'étaient l'éclat et le flou masqué, il peut animer les sprites et plier les éléments en cercle ou en arc. Cela signifie des animations plus fluides et une meilleure réactivité dans les applications gourmandes en ressources.


Un ajout clé dans cette version est le module Qt Quick Vector Image, qui permet l'intégration transparente de fichiers SVG en tant que graphiques vectoriels évolutifs dans les scènes Qt Quick. Il s'agit d'une option parfaite pour les développeurs qui cherchent à créer des éléments d'interface utilisateur réactifs et indépendants de la résolution, garantissant que vos conceptions sont nettes et cohérentes sur différents appareils et tailles d'écran. Dans le module Qt Quick Shapes, l'élément ShapePath peut maintenant prendre n'importe quel élément du fournisseur de texture pour remplir la forme, en appliquant une transformation arbitraire.

Nom : 2.jpg
Affichages : 1103
Taille : 131,7 Ko

QQuickRenderTarget a reçu de nouvelles API qui donnent aux développeurs plus de contrôle sur la gestion des textures, et facilitent l'intégration de Qt Quick 3D avec des moteurs, des frameworks et des API externes.

TableView permet maintenant aux programmeurs et aux utilisateurs finaux de déplacer les colonnes et les lignes, et les types Image et BorderImage peuvent conserver l'image précédente jusqu'à ce qu'une nouvelle image soit chargée de manière asynchrone.


Contrôles rapides Qt : Une meilleure intégration dans le bureau

Qt 6.8 ajoute une implémentation du système de conception Fluent WinUI3 en tant que style Qt Quick Controls. Ce nouveau style donne à l'application un aspect et une sensation natifs sur Windows 11, mais il est implémenté en utilisant les primitives Qt Quick et est disponible sur toutes les plateformes.

Sur macOS, la barre de menu rapide et les menus s'intègrent par défaut à la barre de menus native du système. Les menus contextuels et autres fenêtres contextuelles peuvent également être transformés en fenêtres contextuelles de premier niveau, ce qui est désormais le comportement par défaut des boîtes de dialogue Qt Quick sur les plateformes de bureau. Les applications peuvent utiliser la nouvelle propriété popupType pour contrôler ce comportement pour chaque fenêtre contextuelle.

Nom : 3.jpg
Affichages : 1105
Taille : 56,4 Ko

Nouveau module XR : La puissance des expériences immersives

Avec l'importance croissante des applications de réalité virtuelle, augmentée et mixte, nous sommes ravis d'introduire un nouveau module dans Qt 6.8 dédié à la prise en charge des appareils XR. Le nouveau module Qt Quick 3D Xr permet aux développeurs de créer plus facilement des expériences immersives pour les plateformes de réalité virtuelle (VR) et de réalité augmentée (AR), en s'assurant que Qt reste un choix de premier ordre pour les développeurs d'applications, quel que soit l'appareil cible.

Nom : 4.jpg
Affichages : 1110
Taille : 57,7 Ko

Le nouveau module prend en charge les entrées spatiales via le suivi des mains et les contrôleurs, ainsi que les ancrages spatiaux et la locomotion. Cela permet aux utilisateurs d'interagir avec un environnement Qt Quick 3D lorsqu'ils utilisent Apple VisionPro ou un dispositif OpenXR tel que Meta Quest 2 et 3.

Pour une performance de rendu optimale dans un affichage monté sur la tête, cette version, complète le support du rendu multi-vues dans le graphe de scène de Qt Quick, dans les objets et matériaux Quick standard, et dans l'intégration du système de construction de Qt Shader Tools.


Qt Quick 3D : ombres et matériaux améliorés

Qt Quick 3D 6.8 rend de meilleures ombres en utilisant des cartes d'ombres en cascade et des ombres douces filtrées plus proches en pourcentage.

Nom : 5.jpg
Affichages : 1109
Taille : 31,1 Ko

Les artistes techniques peuvent ajuster le Fresnel grâce à de nouvelles propriétés de PrincipledMaterial, et appliquer un masquage basé sur l'attribut de couleur du vertex. Les matériaux personnalisés prennent désormais en charge les mêmes propriétés que PrincipledMaterial.


Mise en réseau avec Qt Network, Qt Network Auth, Qt GRPC, et Qt HttpServer

QNetworkAccessManager peut maintenant envoyer des requêtes HTTP sur un socket local, et les applications peuvent utiliser QFormDataBuilder pour faciliter la création de messages HTTP en plusieurs parties.

Dans le module Qt Network Auth, cette version apporte de nombreuses améliorations et résolu de nombreux problèmes. En outre, la nouvelle classe QOAuthUriSchemeReplyHandler permet de gérer les redirections de schéma URI privé/personnel ou https, et l'échange de code de preuve de clé est pris en charge par la classe QOAuth2AuthorizationCodeFlow.

QDnsLookup a appris à connaître les enregistrements d'association TLS, et peut maintenant envoyer des DNS sur TLS, et informe le client si le serveur DNS a effectué une vérification sur l'authenticité des données.

Les modules Qt GRPC et Qt Protobuf sont maintenant entièrement pris en charge et ont une API stable, avec un support supplémentaire pour le streaming.


Autres améliorations à travers les modules

En plus des ajouts majeurs ci-dessus, cette version apporte une série d'améliorations à travers le framework pour rationaliser davantage le développement.

  • Qt Core

    Le nouveau QChronoTimer s'intègre à std::chrono et améliore la précision des opérations basées sur le temps. Dans les chemins de code chauds, QString, QByteArray, et QList peuvent maintenant se redimensionner sans initialisation des données.

    QHash prend désormais en charge les recherches hétérogènes pour certains types Qt, notamment QString et QStringView, et QDirListing fournit une API basée sur un itérateur pour les entrées de répertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    using F = QDirListing::IteratorFlag;
    QDirListing dirList(u"/sys"_s, QStringList{u"scaling_cur_freq"_s},
                        F::FilesOnly | F::Recursive);
    for (const auto &dirEntry : dirList) {
        QFile f(dirEntry.filePath());
        if (f.open(QIODevice::ReadOnly))
            qDebug() << f.fileName() << f.readAll().trimmed().toDouble() / 1000 << "MHz";
    }
    Les développeurs ciblant la plateforme Android peuvent utiliser l'espace de noms QtJniTypes pour déclarer des types Java avec leur signature JNI, et s'appuyer sur la génération de signature au moment de la compilation lors de l'interface avec JNI via QJniObject. Le type QJniArray permet de travailler facilement avec des tableaux Java à partir d'un code C++.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Q_DECLARE_JNI_CLASS(TimeZone, "java/util/TimeZone");
    using namespace QtJniTypes;
     
    const QJniArray availableIDs = TimeZone::callStaticMethod<String[]>("getAvailableIDs");
    for (const auto &availableID : availableIDs) {
        // ~~~
    }
    Cette version ajoute la prise en charge de l'opérateur de vaisseau spatial C++20<=>() aux types de valeurs Qt, et les types géométriques à virgule flottante tels que QPointF et QMarginsF prennent désormais en charge les comparaisons floues et les contrôles de nullité.

  • Interface graphique Qt

    Les applications développées avec Qt 6.8 peuvent désormais demander explicitement un schéma de couleurs pour remplacer les paramètres du système avec une apparence explicite sombre ou claire :

    Nom : 6.jpg
Affichages : 1098
Taille : 38,4 Ko

    Les applications peuvent également remplacer le déclencheur du menu contextuel afin d'assurer un comportement cohérent de l'application sur toutes les plates-formes.

    Cette version apporte plusieurs améliorations à la prise en charge de l'espace colorimétrique et ajouté des API permettant un contrôle fin de la stratégie de fusion et de stylisation des polices.

    Le cadre d'accessibilité prend désormais en charge le signalement des attributs et permet aux applications de déclencher des événements d'annonce qui sont pris en compte par les technologies d'assistance.

  • Qt Sql

    Les utilisateurs du module Qt Sql peuvent désormais spécifier la politique de précision numérique, et une base de données QSqlDatabase peut modifier l'affinité des threads de la connexion à la base de données. Les pilotes PostgreSQL et MySQL/MariaDB gèrent désormais correctement les données de date et d'heure lorsque le serveur se trouve dans un fuseau horaire différent de celui du client.

  • Qt Test

    Les auteurs de tests peuvent maintenant faire en sorte que les tests qui échouent ou qui sont ignorés lèvent une exception, ce qui facilite l'écriture de tests qui utilisent des sous-routines. Les macros timeout acceptent désormais les littéraux std::chrono, ce qui permet d'obtenir un code de test plus lisible.

  • Qt WebEngine

    La nouvelle classe QWebEngineFrame ajoute des API spécifiques aux cadres, telles que l'impression ou l'exécution de JavaScript sur des cadres spécifiques. QWebEngineClientHints permet aux applications de mieux contrôler les identifications du navigateur, et QWebEnginePermission facilite la gestion des autorisations des sites web nouveaux et existants.

  • Widgets Qt

    Cette version apporte plusieurs améliorations au code de rendu pour les écrans à haute résolution afin que les applications basées sur des widgets soient nettes sur tous les types d'écran.

  • Outils

    Le générateur de documentation QDoc, qui s'interface avec Clang, nécessite désormais au minimum Clang 17. Il est passé d'une API basée sur le langage C à une API basée sur le langage C++. Cela améliore la capacité à mettre en œuvre la prise en charge des nouvelles fonctionnalités du langage C++ dans QDoc. De plus, QDoc a été étendu avec une série de nouvelles commandes.

    Le serveur de langage QML fournit maintenant une coloration syntaxique sémantique, a amélioré la prise en charge du langage JavaScript, peut générer des extraits pour les types Quick et donner des conseils de documentation.


L'équipe de Qt conclut l'annonce de la disponibilité de Qt 6.8 :

Avec ces nouvelles fonctionnalités puissantes et ces améliorations de performance, Qt 6.8 continue de permettre aux développeurs de créer des applications réactives, visuellement attrayantes et riches en médias sur une large gamme de plateformes. J'aimerais remercier tous les contributeurs qui ont aidé à faire de Qt 6.8 une réalité. Vous trouverez une liste complète de tous les membres de la communauté qui ont apporté un correctif au code source de Qt à la fin des notes de publication. Un remerciement spécial va à tous ceux qui ont aidé à améliorer Qt en rapportant des bogues, en nous envoyant leurs commentaires et leurs contributions, ou en nous parlant de leurs cas d'utilisation. Et enfin, j'aimerais remercier tous ceux qui ont participé à la sortie de cette version !

Nous sommes impatients de voir comment vous allez tirer parti de la dernière version de Qt pour créer la prochaine génération d'applications. Passez à Qt 6.8 dès aujourd'hui et faites passer vos projets à la vitesse supérieure !

Source : "Qt 6.8 LTS Released!"

Et vous ?

Que pensee-vous de ces mises à jour ?

Voir aussi :

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 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

Changement dans les offres commerciale et open source de Qt : Fin des LTS et de l'installateur hors ligne pour l'offre libre, licence à 499 $ / an pour les petites entreprises