Sur cette page

Nouveautés de Qt 6.9

Nouvelles fonctionnalités de Qt 6.9

Qt Core Le module

  • QString::arg() prend désormais en charge les arguments UTF-8 (QUtf8StringView) et QAnyStringView. Le passage de littéraux de chaîne C ou de QByteArrays à arg() n'entraîne plus de conversion implicite préalable en QString.
  • QAnyStringView De plus, QUtf8StringView disposent désormais d’une fonction (multi-)arg(), à l’instar de QStringView et QLatin1StringView. Celles-ci prennent également en charge les arguments QUtf8StringView et QAnyStringView, tout comme la version QString.
  • QJniArray peut désormais créer un tableau vide de taille fixe et modifier les valeurs d’un tableau à l’aide d’un itérateur non constant ou operator[]
  • QLocale::uiLanguages() inclut désormais des entrées de secours obtenues en supprimant les composants les plus à droite des noms. Les appelants qui effectuaient eux-mêmes ces troncatures sont désormais encouragés à faire confiance à QLocale, qui sait quelles solutions essayer et dans quel ordre les tester.
  • QLocale::bcp47Name() représente désormais la locale C sous la forme « en-POSIX », afin de la distinguer de la simple « en » et de mieux s’aligner sur la spécification BCP47. La variante POSIX est désormais également reconnue comme désignant la locale C, lors de la construction de celle-ci à partir de son nom.
  • QTimeZone::abbreviation() sous Windows renvoie désormais une abréviation plutôt que le nom complet.
  • QTimeZone::displayName() devrait désormais fournir des noms adaptés à la locale pour les zones sur toutes les plateformes, alors qu’auparavant certaines ne prenaient pas en charge cette fonctionnalité.
  • La conversion de chaînes de date-heure comportant un fuseau horaire à l’aide de ` QDateTime ` reconnaît désormais les noms d’affichage complets des fuseaux horaires.
  • QMetaEnum et QFlags prennent désormais en charge les types nécessitant jusqu’à 64 bits.
  • QJsonValue peut désormais analyser et sérialiser du JSON en utilisant directement ` fromJson ` et ` toJson `, sans passer par ` QJsonDocument`. Cela lui permet d’analyser et de sérialiser des valeurs primitives telles que des chaînes de caractères ou des nombres, ainsi que des valeurs composées.
  • QThread Il est désormais possible de définir l’indicateur de qualité de service des threads du système d’exploitation à l’aide de la nouvelle fonction setServiceLevel.
  • QThreadPool Il est également possible de définir le niveau de qualité de service pour ses threads à l’aide de ` setServiceLevel`.
  • QFile::supportsMoveToTrash() indique si la fonction QFile::moveToTrash() est implémentée sur le système d’exploitation actuel.
  • QIODevice::readLineInto() permet de lire une ligne de données dans un tampon préalloué.
  • Utilisez la nouvelle macro ` Q_STATIC_LOGGING_CATEGORY ` pour déclarer une catégorie de journalisation qui n’est utilisée que dans une seule unité de traduction.
  • Appelez la nouvelle méthode ` QSortFilterProxyModel::beginFilterChange()` pour vous assurer que les modifications du contenu filtré sont correctement détectées.
  • QTimerEvent::matches() facilite la vérification de l’appartenance d’un événement de temporisation à une QBasicTimer spécifique.
  • QUuid::createUuidV7() permet de créer des identifiants uniques basés sur la norme RFC9562.
  • QCommandLineParser::showMessageAndExit() offre un moyen pratique d’afficher un message d’information ou d’erreur à l’utilisateur avant de quitter l’application.
  • QHash Les API ` tryEmplace ` et ` insertOrAssign ` ont été adaptées pour correspondre aux API respectives de la bibliothèque standard.
  • QSpan Peut désormais gérer des segments de taille variable via les méthodes ` chop ` et ` slice `.

Qt Graphs Module

  • Ajout de la prise en charge de la transparence à Surface3D, en utilisant la transparence indépendante de l’ordre fournie par QtQuick3D. Seule une technique approximative (WeightedBlended) a été implémentée pour QtQuick3D jusqu’à présent ; aucune technique précise ne peut donc encore être utilisée.
  • Ajout de rootNode pour permettre l’injection de graphes dans un View3D dans les applications QtQuick3D.
  • Ajout d’une autre méthode de sélection, doRayPicking, à utiliser avec les injections de graphiques dans les View3D s.
  • Ajout de la classe QSpline3DSeries pour permettre aux utilisateurs de représenter leurs données sous forme de splines.
  • Ajout de la propriété ` valueColoringEnabled ` à `Bars3D`, qui permet de colorer chaque barre séparément en fonction de sa valeur.
  • Ajout de la propriété ` scaleLabelsByCount ` à `QAbstract3DAxis`, permettant aux utilisateurs de définir si les étiquettes d’axe doivent être redimensionnées en fonction du nombre total d’étiquettes.
  • Ajout de la propriété ` labelSize ` à `QAbstract3DAxis`, permettant aux utilisateurs de définir la taille des étiquettes d'axe pour chaque axe.
  • Ajout de la prise en charge de la définition des rotations minimales et maximales dans les directions X et Y pour Bars3D, Scatter3D et Surface3D.
  • Ajout de la propriété ` alignment ` à `QAbstractAxis`, permettant aux utilisateurs d’aligner les axes à gauche, à droite, en haut ou en bas.
  • Ajout de la propriété ` plotArea ` à `QGraphsView`, permettant aux utilisateurs de définir le rectangle dans lequel un graphique sera tracé.
  • Ajout de la prise en charge du zoom et du panoramique à QGraphsView.
  • Ajout de la prise en charge de la gestion personnalisée des entrées pour les graphiques en aires, linéaires, circulaires et de nuages de points.

Qt GRPC Module

  • Ajout de l’exemple de présentation du Guide client d’ Qt GRPC.
  • Amélioration et peaufinage de l’ensemble de la documentation et des exemples.
  • Optimisation des RPC en streaming pour l'écriture sous forte charge.

Qt GUI Le module

  • QBrush et QPen disposent désormais d’opérateurs optimisés pour la comparaison ou l’affectation de valeurs de couleur et de style.
  • QPainter::setBrush() dispose désormais de nouvelles surcharges optimisées pour définir une couleur comme pinceau uni.
  • QPainterStateGuard est une nouvelle classe RAII permettant d’assurer l’équilibre des opérations d’enregistrement et de restauration sur une instance de ` QPainter`.
  • QColorSpace a reçu des API permettant de définir et de récupérer les quatre points de l'espace colorimétrique primaire.
  • Ajout d’ Qt::ExpandedClientAreaHint pour demander que la zone client de la fenêtre soit étendue aux zones où elle pourrait être masquée par d’autres éléments de l’interface utilisateur, ou entrer en conflit avec ceux-ci, tels que les contrôles de la barre de titre de la fenêtre ou d’autres interfaces utilisateur du système.
  • Ajout de la méthode ` Qt::NoTitleBarBackgroundHint ` pour demander que la barre de titre de la fenêtre soit dessinée sans couleur d’arrière-plan.
  • Ajout de la méthode ` QWindow::safeAreaMargins()` pour refléter la zone de sécurité de la fenêtre.
  • Ajout de l’analyse et de la détection automatique des séquences d’émojis dans le texte, garantissant l’utilisation de polices en couleur lorsque cela est nécessaire, conformément à la spécification Unicode. Cet analyseur peut être désactivé pour chaque mise en page à l’aide de ` QTextOption::DisableEmojiParsing`, ou en désactivant le segmentateur d’émojis lors de la configuration de Qt.
  • Ajout de la fonction ` QFontDatabase::addApplicationEmojiFontFamily()` et des fonctions associées pour personnaliser la police d’émojis par défaut utilisée par l’application.
  • Ajout de la fonction ` QFontInfo::variableAxes()` permettant de récupérer des informations sur les axes variables pris en charge par une police.
  • QImage::flipped() et QImage::flip() fournissent une API basée sur « Qt::Orientation » pour retourner une image, ce qui rend le code plus lisible que l’alternative QImage::mirrored() basée sur «bool».
  • QRhi: lors de l’exécution avec OpenGL ES sur des GPU mobiles prenant en charge cette fonctionnalité, GL_EXT_multisampled_render_to_texture est utilisé dans la mesure du possible. Pour des clients tels que Qt Quick et Qt Quick 3D, cela peut apporter des améliorations de performances significatives en matière de rendu multisampled sur les architectures GPU en mosaïque.
  • QRhi: Sous Windows avec Direct 3D 11 et 12, les requêtes de mise à jour d’ QWindow sont désormais gérées par un thread dédié de surveillance du vblank, ce qui réduit la charge du processeur et la latence. Cela signifie que les clients tels que Qt Quick devraient bénéficier d’un décalage réduit lors de l’interaction, par exemple en faisant glisser des éléments à la souris ou au toucher.
  • QRhi: Ajout de la prise en charge de l’ombrage à taux variable, le cas échéant (Direct 3D 12, Vulkan, Metal). Cela permet la prise en charge de la fovéation dynamique avec l’ Qt Quick 3D XR sur visionOS.
  • QRhi: Le mélange par cible de rendu est désormais également pris en charge de manière optionnelle pour OpenGL.
  • QRhi: Ajout de la prise en charge d’un certain nombre de formats de textures d’entiers et de profondeur.
  • QRhi: Ajout de la prise en charge du passage de sémaphores d’attente/signal fournis par l’application sous Vulkan. Ceux-ci sont ensuite transmis à vkQueueSubmit et Present, permettant ainsi l’intégration de moteurs de rendu/calcul externes qui s’appuient sur plusieurs threads et nécessitent une synchronisation appropriée avec le moteur de rendu du graphe de scène.
  • Utilisez la propriété ` QPdfWriter::author()` pour définir l’auteur du document PDF généré.

Module Qt HttpServer

Qt Multimedia Module

Qt Network Module

  • Ajout de la méthode ` setMaxConcurrentStreams ` qui contrôle le paramètre HTTP/2 `SETTINGS_MAX_CONCURRENT_STREAMS`.

Qt Network Module d’authentification

Qt Protobuf Module

  • Amélioration et peaufinage de l’ensemble de la documentation.
  • Ajout de l’option ` HEADER_GUARD ` pour spécifier le mécanisme utilisé pour protéger les fichiers d’en-tête générés.
  • Ajout de la fonctionnalité « protobuf-unsafe-registry » pour privilégier les performances au détriment de la sécurité lors de l’accès aux sérialiseurs Protobuf personnalisés.

Qt Qml Module

  • QML Language Server fournit désormais une vue arborescente de la structure du document. Cela permet aux clients (par exemple, les IDE ou les éditeurs de code) de représenter la structure d’un document QML sous forme d’arborescence interactive, affichant les objets, les propriétés, les méthodes et d’autres éléments de code dans une vue hiérarchique.
  • Ajout de la fonctionnalité de longueur maximale de ligne à qmlformat : qmlformat contrôle désormais l’emplacement des sauts de ligne en fonction d’une longueur maximale autorisée, garantissant ainsi un document QML cohérent et lisible.

Qt Quick Le module

  • Ajout de la propriété attachée ` SafeArea ` pour gérer les zones de sécurité d’un `Item` ou d’une `Window`.
  • Ajout du composant « Shear » pour appliquer facilement des transformations de cisaillement aux éléments.
  • Ajout de la propriété ` FontMetrics::capitalHeight `, qui manquait auparavant dans l’API ` Qt Quick `.
  • Ajout du type ` FontInfo ` pour récupérer les résultats de la résolution des polices, correspondant à la classe ` QFontInfo ` en C++.
  • Réintroduction de la prise en charge du mode de rendu FramebufferObject d’ QQuickPaintedItem lorsque l’API graphique utilisée est OpenGL. Cette fonctionnalité est fournie pour faciliter le portage des applications de l’époque de Qt 5 qui nécessitent l’utilisation du moteur de dessin OpenGL hérité d’ QPainter pour leurs QQuickPaintedItems.
  • Optimisation de la logique de mise en pool des tampons du moteur de rendu du graphe de scène afin d’éviter les pics d’utilisation de la mémoire dans les scènes comportant des géométries volumineuses. De plus, la charge système est réduite pour les scènes comportant un grand nombre d’éléments, en particulier lors de l’exécution sous OpenGL.

Qt Quick Controls Module

  • Ajout de ` ContextMenu`. Celui-ci peut être associé à n’importe quel élément afin d’afficher un menu contextuel lors d’un événement spécifique à la plateforme, tel qu’un clic droit ou la touche de menu contextuel.
  • TextField et ` TextArea ` fournissent désormais par défaut un ` ContextMenu `. Si vous disposez déjà d’un menu contextuel personnalisé pour ces types, ` ContextMenu ` n’ouvrira pas le sien (lors d’un clic droit ou de la touche de menu contextuel).

Qt Quick Effects Module

  • Nouvel élément « RectangularShadow » permettant de créer rapidement une ombre ou une lueur en forme de rectangle arrondi. L’API est similaire à la propriété CSS `box-shadow`, avec des valeurs de couleur, de décalage, d’étalement et de flou.

Qt Quick Module 3D

  • Ajout d’une implémentation de la transparence indépendante de l’ordre (OIT) avec fusion pondérée (WeightedBlended) pour le rendu des objets transparents.
  • Ajout de la prise en charge des formats de texture en entier non signé 32 bits.
  • Amélioration du contrôle des limites des cartes d'ombres pour l'instanciation de modèles, ce qui peut permettre de meilleures performances lorsque les calculs deviennent trop gourmands en ressources.
  • Ajout de la prise en charge des cartes d'ombres 4K avec un nouveau paramètre de résolution « Ultra ».
  • Ajout d’une option permettant de forcer la précision moyenne pour les nombres à virgule flottante dans les shaders de fragment GLSL ES. Fournie principalement comme outil d’optimisation des performances. Définissez la variable d’environnement QT_QUICK3D_MEDIUM_PRECISION sur une valeur non nulle. N’a aucun effet sur les autres types de shaders (y compris le GLSL non-ES).
  • DebugView Prise en charge de la visualisation des limites des ombres des lumières ponctuelles.
  • Portage des géométries intégrées de Qt 3D vers QtQuick3D.Helpers. PlaneGeometry, SphereGeometry, CylinderGeometry, ConeGeometry et TorusGeometry sont désormais disponibles dans QtQuick3D.Helpers.
  • Ajout d’un portage de l’ExtrudedTextMesh depuis Qt 3D vers QtQuick3D.Helpers.
  • Ajout de la prise en charge de l’instanciation avec des matériaux personnalisés dans l’éditeur de matériaux.

Qt Quick Module 3D XR

  • Ajout de la prise en charge de la sortie haptique avec des manettes utilisant l’amplitude, la durée et la fréquence via un nouvel élément dans XrHapticFeedback.
  • Ajout d’une nouvelle propriété dans XrInputAction permettant de désactiver conditionnellement une action sans avoir à la tester dans toutes les fonctions de gestion.
  • Ajout d’un backend Metal pour OpenXR afin de prendre en charge l’exécution dans Meta XR Simulator sur macOS.
  • La propriété « multiViewRenderingEnabled » est désormais en lecture seule et il n’est plus possible d’activer ou de désactiver le rendu multivue lors de l’exécution. Si le rendu multivue est pris en charge, il reste activé pendant toute la durée de vie de l’application. Dans le cadre d’un portage, lorsque le rendu multivue n’est pas souhaité, il peut être désactivé en définissant la variable d’environnement `QT_QUICK3D_XR_DISABLE_MULTIVIEW` sur une valeur non nulle.

Qt Quick Module VectorImage

  • Ajout d’une prise en charge préliminaire des animations de couleur et des animations de transformation, correspondant à la prise en charge actuelle dans Qt SVG.

Module Qt Sql

  • QSqlDriver Une nouvelle fonction ` connectionName()` a été ajoutée ; elle renvoie le nom de la connexion de l’instance ` QSqlDatabase ` associée.
  • QSqlQueryModel Il est désormais possible d'actualiser la base de données à l'aide de ` refresh()` lorsque, par exemple, celle-ci a été modifiée en dehors de Qt et doit donc être relue.

Qt SVG Module

  • Ajout de trois nouvelles valeurs à ` QtSvg::Options ` pour désactiver les animations.
  • Prise en charge des animations CSS pour les propriétés fill, stroke et transform.

Module Qt VirtualKeyboard

  • Ajout d'une nouvelle disposition japonaise utilisant les touches « flick ».
  • Ajout de la prise en charge du réglage du volume sonore des touches.

Qt WebEngine Module

  • Le rendu interne utilise désormais ANGLE, même lorsque Qt utilise OpenGL RHI. Amélioration des performances et réduction des bugs par rapport à Chrome.
  • QWebEngineProfileBuilder et l'WebEngineProfilePrototype QML a été ajoutée pour configurer les profils avant leur création et éviter les conditions de concurrence.
  • QWebEngineLoadingInfo Ajout d’une propriété d’ isDownload pour indiquer que le chargement est lié à un téléchargement.
  • QWebEngineUrlRequestInfo Ajout d’une méthode ` isDownload()` pour indiquer que la requête est liée à un téléchargement.
  • QWebEngineSettings Et trois nouveaux paramètres ont été ajoutés à l’ WebEngineSettings QML : PrintHeaderAndFooter et PreferCSSMarginsForPrinting pour configurer l’impression, ainsi que TouchEventsApiEnabled pour désactiver l’API TouchEvents, que certains sites web utilisent comme déclencheur du mode mobile.

Qt Widgets Le module

  • QAbstractItemView dispose désormais d’une nouvelle propriété ` updateThreshold ` permettant de spécifier quand une mise à jour complète de la vue doit être effectuée, plutôt que d’essayer de déterminer les parties ayant subi des modifications au sein de la méthode `dataChanged()`. Cela s’avère particulièrement utile lorsque de nombreux éléments changent dans un modèle volumineux, car le calcul de la zone de mise à jour peut prendre plus de temps qu’une mise à jour complète de la vue.
  • QComboBox peut dessiner son étiquette à l’aide du délégué de la vue d’élément en définissant la propriété ` labelDrawingMode ` sur ` UseDelegate`.
  • QHeaderView A été optimisé pour réduire considérablement l’utilisation de la mémoire pour les modèles volumineux, à condition que les sections ne soient pas redimensionnées, masquées ou réorganisées.
  • L’identifiant défini comme « QWidget::accessibleIdentifier » peut être utilisé par les technologies d’assistance et par les outils de test automatisés pour identifier un widget spécifique.
  • L'emplacement d'ancrage d'un QDockWidget ne peut pas être défini explicitement à l'aide de la propriété QDockWidget::dockLocation.
  • QStackedWidget émet désormais le signal ` widgetAdded()` lorsqu’un nouveau widget est ajouté à la pile.

Qt XML Module

Outils

Générateur de documentation QDoc

  • QDoc accepte désormais les commandes de mise en forme dans les arguments des macros.
  • Les auteurs peuvent désormais remplacer le type de retour sous-jacent d'une fonction documentée à l'aide d'une commande fn par auto.
  • QDoc peut désormais générer de la documentation à partir des commentaires présents dans les en-têtes C++. Cette fonctionnalité est proposée en avant-première technologique dans QDoc avec Qt 6.9, et nous serions ravis de recevoir les retours de nos utilisateurs. Activez la variable de configuration QDoc `documentationinheaders` pour l'essayer.
  • La documentation des énumérations QML peut être générée à partir d’énumérations C++ grâce à la nouvelle commande ` qmlenumeratorsfrom `.
  • Les commandes ` generatelist ` et `annotatedlist ` prennent désormais en charge un ordre de tri personnalisé pour les listes générées.
  • La commande «deprecated » accepte les versions futures, et QDoc génère un texte approprié lorsqu’il reconnaît qu’une version est encore à venir.
  • Exigences relatives aux bibliothèques Clang : QDoc nécessite les bibliothèques Clang issues de LLVM 17. Son fonctionnement est également confirmé avec les bibliothèques Clang issues de LLVM 18, 19 et 20.
  • QDoc prend désormais en charge l’ajustement des prérequis CMake pour les projets tiers grâce aux commandes `cmakecomponent`, `cmakepackage` et `cmaketargetitem`.
  • Les avertissements liés aux exemples sont désormais configurables via les nouvelles variables de configuration `examples.warnaboutmissingimages ` et ` examples.warnaboutmissingprojectfiles `.
  • QDoc peut désormais générer des infobulles pour les images de votre documentation. La documentation relative à la nouvelle variable de configuration ` usealttextastitle ` explique comment activer cette fonctionnalité pour votre projet.

Modifications apportées au système de compilation

Modifications du système de compilation

  • La compilation de Qt et son utilisation dans des projets CMake nécessitent désormais la version 3.22 ou ultérieure de CMake.

Plateformes de bureau

Windows

  • Ajout d'une nouvelle API CMake publique :
    • Ajout de la fonction CMake ` qt_add_win_app_sdk ` pour ajouter le SDK Windows App au projet.
  • Ajout de la prise en charge du rendu de formats de polices emoji supplémentaires, tels que CBDT et COLRv1.

Client Wayland sous Linux

  • Ajout de la prise en charge du nouveau protocole d'xdg-toplevel-icon-v1 s afin de permettre le fonctionnement de ` QWindow::setIcon()` si le compositeur prend également en charge ce protocole.
  • L’ wl_surface sous-jacente d’une fenêtre partage désormais sa durée de vie et n’est plus détruite lorsque la fenêtre est masquée.

Plateformes mobiles

Android

  • Prise en charge des bibliothèques natives non compressées au sein des APK, supprimant ainsi le recours à packagingOptions.jniLibs.useLegacyPackaging true.
  • Introduction de la fonction CMake ` qt_add_android_permission()`.
  • Ajout de la propriété CMake QT_ANDROID_COMPILE_SDK_VERSION pour définir la version du SDK utilisée pour la compilation du code Java.
  • Ajout de la propriété CMake QT_ANDROID_APP_ICON pour définir l'icône d'une application.
  • Ajout de la propriété CMake QT_ANDROID_APP_NAME pour définir le nom d'une application.
  • Dissociation des autorisations de localisation et Bluetooth pour le niveau d'API 31 et supérieur.
  • Permettre de définir un nombre maximal d’événements d’interface utilisateur en arrière-plan mis en file d’attente.
  • Ajout d’un script permettant de déployer et d’exécuter facilement des applications, ainsi que de récupérer les journaux depuis le terminal.
  • Qt Quick Pour Android et QtQuickView:
    • Ajout des méthodes setData() et dataChanged() à QtAbstractItemModel.
    • Ajouter l'interface de rappel OnDataChangedListener.
    • QtQuickViewContent: ajouter une surcharge de la méthode onStatusChanged() qui transmet l'objet QtQuickViewContent sous-jacent.
    • Prise en charge de plusieurs vues intégrées à partir d'un service Android.

Plateformes embarquées

Boot to Qt

Systèmes d’exploitation temps réel

  • La prise en charge des systèmes d’exploitation en temps réel est assurée uniquement pour les versions LTS. Pour les versions non LTS, la prise en charge est disponible exclusivement via les services professionnels.

Liste des modifications apportées aux API

Ces pages présentent un aperçu des modifications apportées aux API dans Qt 6.9 :

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.