Sur cette page

Nouveautés de Qt 6.9

Nouvelles fonctionnalités de Qt 6.9

Qt Core Le module

  • QString::arg() supporte maintenant les arguments UTF-8 (QUtf8StringView) et QAnyStringView. Passer des chaînes C littérales ou des QByteArrays à arg() ne convertit plus implicitement en QString en premier.
  • QAnyStringView et QUtf8StringView ont maintenant un (multi-)arg(), comme QStringView et QLatin1StringView l'avaient déjà. Ils supportent également les arguments QUtf8StringView et QAnyStringView, comme la version QString.
  • QJniArray peut maintenant créer un tableau vide de taille fixe, et changer les valeurs d'un tableau en utilisant un itérateur non-const ou un itérateur non-const. operator[]
  • QLocale::uiLanguages() inclut désormais des entrées de repli obtenues en supprimant les composants ultérieurs des noms. Les appelants qui ont effectué de telles troncatures pour eux-mêmes sont maintenant encouragés à faire confiance à QLocale pour savoir quelles sont les bonnes choses à essayer et dans quel ordre les essayer.
  • QLocale::bcp47Name() représente maintenant la locale C comme "en-POSIX", pour la distinguer du simple "en" et mieux s'aligner avec la spécification BCP47. De même, la variante POSIX est maintenant reconnue comme signifiant la locale C, lors de la construction d'une locale à partir de son nom.
  • QTimeZone::abbreviation() sous Windows renvoie désormais une abréviation plutôt que le nom complet.
  • QTimeZone::displayName() devrait maintenant fournir des noms adaptés aux paramètres locaux pour les zones sur toutes les plates-formes, alors qu'auparavant certaines ne le supportaient pas.
  • La conversion des chaînes d'horodatage avec une partie de fuseau horaire en QDateTime reconnaît désormais les noms d'affichage de zones au format long.
  • QMetaEnum et QFlags peuvent maintenant supporter des types nécessitant jusqu'à 64 bits.
  • QJsonValue peut maintenant analyser et sérialiser 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 ou des nombres, ainsi que des valeurs composées.
  • QThread a obtenu la possibilité de définir l'indice de qualité de service des threads du système d'exploitation à l'aide de la nouvelle fonction setServiceLevel.
  • QThreadPool Le système d'exploitation peut également définir le niveau de qualité de service de ses threads à l'aide de la fonction setServiceLevel.
  • QFile::supportsMoveToTrash() indique si QFile::moveToTrash() est implémenté 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 reconnues.
  • QTimerEvent::matches() permet de vérifier plus facilement si un événement de temporisation appartient à une QBasicTimer spécifique.
  • QUuid::createUuidV7() permet de créer des identificateurs uniques basés sur RFC9562.
  • QCommandLineParser::showMessageAndExit() fournit 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é modifiées pour correspondre aux API respectives de la bibliothèque standard.
  • QSpan peut désormais utiliser chop et slice pour des portées de taille variable.

Qt Graphs Module

  • Ajout du support de la transparence à Surface3D, en utilisant la transparence indépendante de l'ordre de QtQuick3D. Seule une technique approximative (WeightedBlended) a été implémentée à QtQuick3D jusqu'à présent, donc aucune technique précise ne peut être utilisée pour l'instant.
  • Ajout de rootNode pour permettre d'injecter des graphes à View3D dans les applications QtQuick3D.
  • Ajout d'une autre méthode de prélèvement, doRayPicking, à utiliser avec les injections de graphes View3D.
  • Ajout de la classe QSpline3DSeries pour permettre aux utilisateurs de rendre 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, qui permet aux utilisateurs de définir si les étiquettes des axes doivent être mises à l'échelle en fonction de la quantité totale d'étiquettes.
  • Ajout de la propriété labelSize à QAbstract3DAxis, qui permet 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 à 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 dessiné.
  • Ajout de la prise en charge du zoom et du panoramique à QGraphsView.
  • Ajout de la prise en charge de la gestion des entrées personnalisées pour les graphiques de surface, linéaires, circulaires et de dispersion.

Qt GRPC Module

  • Ajout de l'exemple de présentation du guide client Qt GRPC.
  • Amélioration et raffinement de l'ensemble de la documentation et des exemples.
  • Optimisation des RPC en continu pour l'écriture sous forte charge.

Qt GUI Module

  • QBrush et QPen ont reçu des opérateurs optimisés pour comparer ou assigner des valeurs de couleur et de style.
  • QPainter::setBrush() a de nouvelles surcharges optimisées pour définir une couleur comme une brosse solide.
  • QPainterStateGuard est une nouvelle classe RAII pour assurer des opérations de sauvegarde/restauration équilibrées sur QPainter.
  • QColorSpace a obtenu des API pour définir et obtenir les quatre points de l'espace colorimétrique primaire.
  • Ajout de Qt::ExpandedClientAreaHint pour demander que la zone client de la fenêtre soit étendue aux zones où elle pourrait être masquée ou entrer en conflit avec d'autres éléments de l'interface utilisateur, tels que les contrôles de la barre de titre de la fenêtre ou d'autres interfaces utilisateur du système.
  • Ajout de Qt::NoTitleBarBackgroundHint pour demander que la barre de titre de la fenêtre soit dessinée sans couleur de fond.
  • Ajout de 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 emoji dans le texte, garantissant l'utilisation de polices de couleur lorsque cela est nécessaire, conformément à la spécification Unicode. Cette analyse peut être désactivée pour chaque mise en page en utilisant QTextOption::DisableEmojiParsing, ou en désactivant le segmenteur d'emoji lors de la configuration de Qt.
  • Ajout de QFontDatabase::addApplicationEmojiFontFamily() et des fonctions associées pour personnaliser la police emoji par défaut utilisée par l'application.
  • Ajout de QFontInfo::variableAxes() pour récupérer des informations sur les axes variables supportés par une police.
  • QImage::flipped() et QImage::flip() fournissent une API basée sur Qt::Orientation pour retourner une image, rendant le code plus facile à lire que l'alternative basée sur bool QImage::mirrored().
  • QRhiGL_EXT_multisampled_render_to_texture : lors de l'exécution avec OpenGL ES sur des GPU mobiles avec support présent, GL_EXT_multisampled_render_to_texture est utilisé dans la mesure du possible. Pour les clients tels que Qt Quick et Qt Quick 3D, cela apporte potentiellement des améliorations significatives de performance dans le rendu multi-échantillonné sur les architectures GPU en mosaïque.
  • QRhi: Sous Windows avec Direct 3D 11 et 12, les demandes de mise à jour de QWindow sont désormais gérées par un thread de surveillance vblank dédié, ce qui réduit la charge CPU et la latence. Cela signifie que les clients tels que Qt Quick devraient avoir un temps de latence réduit lorsqu'ils font glisser des éléments de manière interactive à l'aide de la souris ou du toucher, par exemple.
  • 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 Qt Quick 3D XR sur visionOS.
  • QRhi: Le mélange de cibles par rendu est désormais pris en charge de manière facultative pour OpenGL également.
  • QRhi: Ajout de la prise en charge d'un certain nombre de formats de texture en nombres entiers et en profondeur.
  • QRhi: Ajout de la prise en charge du passage de sémaphores d'attente/signal fournis par l'application lorsqu'il s'agit de 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 de la scène.
  • Utilisez la propriété QPdfWriter::author() pour définir l'auteur du document PDF généré.

Le module Qt HttpServer

Qt Multimedia Module

Qt Network Module

Qt Network Module Auth

Qt Protobuf Module

  • Amélioration et raffinement de toute 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 échanger la sécurité contre la performance lors de l'accès aux sérialiseurs protobuf personnalisés.

Qt Qml Le module

  • QML Language Server fournit désormais une vue d'ensemble 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 la forme d'un schéma interactif, 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 de ligne maximale à qmlformat : qmlformat contrôle maintenant où couper les lignes en fonction d'une longueur de ligne maximale autorisée, garantissant ainsi un document QML cohérent et lisible.

Qt Quick Module

  • Ajout de la propriété SafeArea attached pour gérer les zones sûres d'un élément ou d'une fenêtre.
  • Ajout d'un composant Shear qui permet d'appliquer des transformations de cisaillement aux éléments.
  • Ajout de la propriété FontMetrics::capitalHeight, qui était auparavant absente de 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 de QQuickPaintedItem lorsque l'API graphique utilisée est OpenGL. Ceci est fourni en tant qu'aide au portage pour les applications de l'ère Qt 5 qui nécessitent l'utilisation du moteur de peinture OpenGL de QPainter pour leurs QQuickPaintedItems.
  • Optimisation de la logique de mise en commun des tampons du moteur de rendu de la scène pour éviter les pics d'utilisation de la mémoire dans les scènes avec de grandes géométries. De plus, il y a une réduction de l'overhead pour les scènes avec beaucoup d'éléments, en particulier lorsqu'elles sont exécutées avec OpenGL.

Qt Quick Module de contrôle

  • Ajout de ContextMenu. Il peut être attaché à 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 du menu contextuel.
  • TextField et TextArea fournissent maintenant un ContextMenu par défaut. Si vous disposez déjà d'un menu contextuel personnalisé pour ces types d'éléments, ContextMenu n'ouvrira pas son propre menu contextuel (sur un clic droit ou une touche de menu contextuel).

Qt Quick Module d'effets

  • Nouvel élément RectangularShadow pour une ombre/une lueur rapide en forme de rectangle arrondi. L'API est similaire à celle du 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 OIT (WeightedBlended Order Independent Transparency) pour le rendu des objets transparents.
  • Ajout de la prise en charge des formats de texture 32-bit unsigned integer.
  • Amélioration du contrôle des limites de la carte d'ombres pour les modèles instanciés, permettant potentiellement d'améliorer les performances lorsque le calcul devient coûteux.
  • Ajout de la prise en charge des cartes d'ombres 4K avec un nouveau paramètre de résolution "Ultra".
  • Ajout de l'option permettant de forcer la précision moyenne pour les flottants dans les nuanceurs de fragments GLSL ES. Fourni principalement comme outil d'optimisation des performances. Définissez la variable d'environnement QT_QUICK3D_MEDIUM_PRECISION à une valeur non nulle. N'a aucun effet sur les autres types de shaders (et cela inclut également les GLSL non-ES).
  • DebugView supporte maintenant la visualisation des limites pour les ombres lumineuses ponctuelles.
  • Portage des géométries intégrées de Qt 3D à QtQuick3D. Aide. PlaneGeometry Les géométries de base, SphereGeometry, CylinderGeometry, ConeGeometry et TorusGeometry sont maintenant disponibles dans QtQuick3D.Helpers.
  • Ajout d'un portage de ExtrudedTextMesh de Qt 3D à QtQuick3D.Helpers.
  • Ajout de la prise en charge de l'utilisation 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 contrôleurs utilisant l'amplitude, la durée et la fréquence par le biais d'un nouvel élément XrHapticFeedback.
  • Ajout d'une nouvelle propriété dans XrInputAction pour désactiver conditionnellement une action sans avoir à la tester dans toutes les fonctions du gestionnaire.
  • Ajout d'un backend Metal pour OpenXR afin de supporter 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 le rendu multi-vues au moment de l'exécution. Si le rendu multi-vues est pris en charge, il est activé pendant toute la durée de vie de l'application. Dans les situations de portage, lorsque le rendu multi-vues n'est pas souhaité, il peut être désactivé en définissant la variable d'environnement QT_QUICK3D_XR_DISABLE_MULTIVIEW à une valeur non nulle.

Qt Quick Module VectorImage

  • Ajout d'un support préliminaire pour les animations de couleur et les animations de transformation, correspondant au support actuel de Qt SVG.

Module Qt SQL

  • QSqlDriver ajout d'une nouvelle fonction connectionName() qui renvoie le nom de la connexion de l'instance QSqlDatabase associée.
  • QSqlQueryModel peut maintenant rafraîchir la base de données avec refresh() lorsque, par exemple, la base de données a été modifiée depuis l'extérieur de Qt et qu'elle doit ê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 qui utilise les touches flick.
  • Ajout d'un support pour ajuster le volume du son des touches.

Qt WebEngine Module

  • A changé le rendu interne pour utiliser ANGLE, également lorsque Qt utilise OpenGL RHI. Amélioration des performances et similitude des bogues avec Chrome.
  • QWebEngineProfileBuilder et QML WebEngineProfilePrototype ajoutés pour configurer les profils avant de les créer et éviter les conditions de course.
  • QWebEngineLoadingInfo ajout d'une propriété isDownload pour indiquer que le chargement est lié à un téléchargement.
  • QWebEngineUrlRequestInfo ajout d'une méthode isDownload() pour indiquer que la demande est liée à un téléchargement.
  • QWebEngineSettings et QML WebEngineSettings a ajouté trois nouveaux paramètres. PrintHeaderAndFooter, et PreferCSSMarginsForPrinting pour configurer l'impression. Et TouchEventsApiEnabled pour désactiver l'API TouchEvents, que certains sites web utilisent comme déclencheur du mode mobile.

Qt Widgets Module

  • QAbstractItemView a une nouvelle propriété updateThreshold pour spécifier quand une mise à jour complète de la vue doit être faite au lieu d'essayer de comprendre les parties où quelque chose a changé dans dataChanged(). Ceci est particulièrement utile lorsque beaucoup d'éléments changent dans un grand modèle car le calcul du rectangle de mise à jour peut prendre plus de temps qu'une mise à jour de la vue complète.
  • QComboBox peut dessiner son étiquette en utilisant le délégué de la vue de l'élément en définissant la propriété labelDrawingMode à UseDelegate.
  • QHeaderView a été optimisé pour réduire considérablement l'utilisation de la mémoire pour les modèles de grande taille tant que les sections ne sont pas redimensionnées, caché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 du dock d'un QDockWidget ne peut pas être explicitement défini à l'aide de la propriété QDockWidget::dockLocation.
  • QStackedWidget émet maintenant 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 formatage dans les arguments des macros.
  • Les auteurs peuvent désormais remplacer le type de retour sous-jacent d'une fonction documentée par une commande fn à l'aide de auto.
  • QDoc peut désormais générer de la documentation à partir de commentaires dans les en-têtes C++. Ceci est ajouté en tant qu'aperçu technologique dans QDoc avec Qt 6.9, et nous serions ravis d'avoir les commentaires 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 des énumérations C++ avec la nouvelle commande qmlenumeratorsfrom.
  • Les commandes generatelist et annotatedlist supportent désormais un ordre de tri personnalisé pour les listes générées.
  • deprecated accepte les versions futures, et QDoc génère le texte approprié lorsqu'il reconnaît une version comme étant dans le futur.
  • Exigences de la bibliothèque Clang : QDoc nécessite les bibliothèques Clang de LLVM 17. Il est également confirmé qu'il fonctionne avec les bibliothèques Clang de LLVM 18, 19 et 20.
  • QDoc prend désormais en charge l'ajustement des exigences CMake pour les projets tiers avec les 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 de la nouvelle variable de configuration usealttextastitle décrit comment l'activer pour votre projet.

Modifications de la plateforme

Changements dans le système de construction

  • La construction de Qt et l'utilisation de Qt dans les projets CMake requièrent désormais la version 3.22 de CMake ou une version ultérieure.

Plates-formes de bureau

Windows

  • Ajout d'une nouvelle API CMake publique :
  • Ajout du support pour le 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 xdg-toplevel-icon-v1 pour que QWindow::setIcon() fonctionne si le compositeur prend également en charge ce protocole.
  • Le site wl_surface sous-jacent d'une fenêtre partage désormais sa durée de vie et n'est plus détruit lorsque la fenêtre est masquée.

Plates-formes mobiles

Android

  • Prise en charge des librairies natives non compressées dans les APK et suppression du besoin de 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 le niveau du SDK pour la construction du code Java.
  • Ajout de la propriété CMake QT_ANDROID_APP_ICON pour définir l'icône d'une application.
  • Ajouter la propriété CMake QT_ANDROID_APP_NAME pour définir le nom d'une application.
  • Découplage des permissions de localisation et de Bluetooth pour le niveau API 31+.
  • Permet de définir un maximum pour les événements d'interface utilisateur en arrière-plan mis en file d'attente.
  • Ajout d'un script pour faciliter le déploiement, l'exécution des applications et l'obtention des logs depuis le terminal.
  • Qt Quick pour Android et QtQuickView :
    • Ajout des méthodes setData() et dataChanged() à QtAbstractItemModel.
    • Ajout de l'interface de rappel OnDataChangedListerner.
    • QtQuickViewContent : Ajout d'une surcharge onStatusChanged() qui transmet l'objet QtQuickViewContent sous-jacent.
    • Prise en charge de plusieurs vues intégrées à partir d'un service Android.

Plates-formes intégrées

Boot to Qt

Systèmes d'exploitation en temps réel

  • La prise en charge des systèmes d'exploitation en temps réel n'est assurée que pour les versions LTS. Pour les versions non LTS, l'assistance est disponible exclusivement par l'intermédiaire des services professionnels.

Liste des changements d'API

Ces pages contiennent une vue d'ensemble des changements d'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.