Sur cette page

Nouveautés de Qt 6.6

Modules nouveaux et réintroduits dans Qt 6.6

Qt 6.6 ajoute les modules et outils suivants :

Modules nouveaux et réintroduits dans la préversion technologique

Remarque : la stabilitédes API et des ABI n'est pas garantie.

Qt Graphs Le module

Qt Graphs est destiné à remplacer le module Qt Data Visualization. Il utilise Qt Quick 3D comme moteur de rendu pour prendre en charge les backends graphiques natifs, au lieu de s'appuyer sur OpenGL 2.1, comme le fait Qt Data Visualization.

Ce module offrira la plupart, voire la totalité, des fonctionnalités de Qt Data Visualization. Certaines fonctionnalités avancées peuvent être incomplètes dans cette version « Technology Preview ».

Nouvelles fonctionnalités de Qt 6.6

Qt Core Module

  • Ajout de la macro Q_NODISCARD_CTOR qui doit être appliquée aux constructeurs marqués nodiscard. Cette macro se résout en [[nodiscard]] sur les compilateurs qui la prennent en charge, et n'a aucun effet sur les autres compilateurs.
  • Ajout de surcharges de la fonction ` assign() ` aux conteneurs Qt suivants : ` QVarLengthArray`, ` QList`, ` QByteArray ` et ` QString`. Ces fonctions constituent un moyen pratique d'attribuer de nouvelles données tout en réutilisant les ` capacity()` existants.
  • Vous pouvez omettre le contenu de tout fichier ajouté au système de fichiers de ressources en spécifiant la propriété de fichier source `QT_DISCARD_FILE_CONTENTS` dans `CMakeLists.txt`. Les nœuds de fichier seront conservés. Lorsque vous écrivez manuellement des fichiers ` .qrc `, vous pouvez obtenir le même effet en définissant l’attribut ` empty ` d’un nœud XML ` file ` sur ` true`.
  • QFileInfo Une nouvelle fonction membre readSymLink() a été ajoutée ; elle renvoie le chemin brut, ainsi que de nouvelles surcharges prenant un QTimeZone pour les fonctions liées aux horodatages.
  • La structure ` QProcess::UnixProcessParameters ` et l’énumération ` QProcess::UnixProcessFlag ` peuvent être utilisées dans la nouvelle fonction membre ` QProcess::setUnixProcessParameters()` pour modifier les paramètres et réglages spécifiques à Unix d’un processus fils, tels que la fermeture des descripteurs de fichiers superflus.
  • La nouvelle classe QNativeIpcKey contient une clé native utilisée par QSharedMemory et QSystemSemaphore, offrant ainsi une meilleure prise en charge des applications en bac à sable sur les plateformes Apple. Voir Clés IPC natives pour plus d’informations.
  • La plupart des API Qt traitant les intervalles de temps ont été portées vers les types de données correspondants de ` std::chrono`.
  • QXmlStreamReader::hasStandaloneDeclaration() indique si le document comporte une déclaration explicite de type « standalone ».

Qt GRPC Module

  • Ajout de QGrpcChannelOptions et QGrpcCallOptions. Il s’agit des nouvelles méthodes permettant de transmettre des options aux canaux et aux appels.
  • Ajout de QGrpcMetadata pour transmettre des métadonnées supplémentaires aux appels.
  • Prise en charge intégrée des types QML pour les classes QtGRPC générées automatiquement.

Qt GUI Module

  • Ajout de QFont::setFeatures() pour un accès direct aux fonctionnalités OpenType de la police.
  • QPalette dispose désormais d’une entrée de couleur « accent() » qui utilise par défaut la couleur d’accentuation du système.
  • La famille de classes QRhi est désormais entièrement documentée et proposée sous forme d’API avec une promesse de compatibilité limitée. L’interface matérielle de rendu Qt (Qt Rendering Hardware Interface) est une API graphique 3D et une couche d’abstraction de langage de shading utilisée par des modules tels que Qt Quick et Qt Quick 3D pour implémenter des moteurs de rendu et des systèmes de matériaux portables et multiplateformes pouvant fonctionner par-dessus Direct 3D 11/12, Vulkan, Metal, OpenGL et OpenGL ES. Les applications qui souhaitent effectuer leur propre rendu de bas niveau sans s’appuyer directement sur des API 3D et des langages de shading potentiellement spécifiques à une plateforme peuvent désormais utiliser QRhi et les classes associées pour enrichir une scène Qt Quick, effectuer un rendu vers un QWindow, réaliser un rendu hors écran dans une texture ou répartir des charges de travail de calcul sur le GPU. Dans les versions précédentes de Qt 6, les classes QRhi étaient entièrement privées et leur documentation n’était pas fournie dans le cadre de la documentation standard de Qt. Désormais, elles sont traitées de la même manière que les classes QPA (QPlatform*), ce qui signifie qu'elles forment un ensemble spécial de classes qui n'offrent pas tous les modèles standard ni les garanties de compatibilité source/binaire des API Qt publiques, mais qui sont néanmoins disponibles pour les développeurs d'applications de niveau intermédiaire ou avancé. La documentation relative aux API QRhi fait désormais partie de la documentation standard de Qt. L’exemple rhiwindow a également été ajouté.
  • Ajout d’un backend Direct 3D 12 pour QRhi. Cela n’affecte actuellement aucune application, car le choix par défaut du backend pour Qt Quick et QQuickWidget reste Direct 3D 11 sous Windows, et cela ne devrait pas changer dans un avenir proche. Le nouveau backend D3D12 doit être considéré comme expérimental pour le moment ; il est principalement utile pour les applications qui ont besoin que Qt effectue son rendu via Direct 3D 12 afin de simplifier l’interopérabilité avec le moteur de rendu ou de calcul de l’application elle-même ou d’un composant externe nécessitant D3D12.
  • Les applications Qt 6 peuvent désormais prendre en charge des formats de presse-papiers personnalisés ou spécifiques à une plateforme, à l'aide des nouvelles classes ` QUtiMimeConverter ` (pour macOS) et ` QWindowsMimeConverter ` (pour Windows). Ces classes sont des versions unifiées des types `QMacPasteboardMime` et `QWindowsMime` de Qt 5. Consultez le guide de portage pour obtenir de l'aide sur l'adaptation d'une implémentation existante.
  • QTextListFormat::setStart() permet à une liste de texte de commencer par un index autre que 1.

Qt Location Module

  • Les éléments de la carte sont désormais affichés de manière plus correcte, y compris ceux qui s’enroulent autour du globe ou comportent des trous.
  • Les éléments de carte peuvent désormais être affichés en utilisant différentes surfaces de référence. L’énumération ` QLocation::ReferenceSurface ` propose les options ` Map ` et ` Globe`, qui peuvent être utilisées avec les propriétés ` referenceSurface ` des types d’éléments pour contrôler si un élément est affiché sur une carte plane ou s’il suit la courbure du globe.
  • La molette de la souris permet de modifier l’ bearing lorsque la touche Maj est enfoncée, ou de modifier l’ tilt lorsque la touche Ctrl est enfoncée.

Qt Multimedia Module

  • La bibliothèque « Qt Multimedia » ne demande plus d’autorisations audio ou vidéo, mais vérifie uniquement si celles-ci sont fournies ou non. Les applications clientes doivent demander ces autorisations à l’aide de l’API « C++ » ou de l’API QML « permissions ».
  • La nouvelle classe ` QWindowCapture ` ajoute la prise en charge de la capture de vidéos de fenêtres d’applications de bureau individuelles au sein d’un ` QMediaCaptureSession`. La vidéo enregistrée peut être redirigée vers n’importe quel type de sortie vidéo, par exemple vers ` QMediaRecorder ` ou vers ` QVideoWidget`. La capture de fenêtres n’est prise en charge qu’avec le backend FFmpeg.
  • QMediaRecorder a été enrichi de propriétés permettant un meilleur contrôle de la qualité vidéo, de la résolution et des débits binaires.

Qt PDF Module

  • La nouvelle classe ` QPdfLinkModel ` fournit la géométrie des liens et leurs destinations sur une page spécifiée.
  • QPdfDocument::pageModel() implémente l’interface Qt::DecorationRole pour générer des vignettes de page à la demande.
  • La nouvelle classe ` QPdfPageSelector ` est une instance spécialisée de ` QSpinBox ` permettant de sélectionner une page dans les visionneuses PDF basées sur des widgets.

Qt Positioning Module

  • La bibliothèque Qt Positioning ne demande plus les autorisations d’accès à l’emplacement, mais vérifie uniquement si elles ont été accordées ou non. Les applications clientes doivent demander ces autorisations à l’aide de l’ C++ ou de l’API QML des autorisations.

Qt Protobuf Module

  • Prise en charge de certains types d’ Qt Core et d’ Qt GUI dans le cadre du schéma *.proto.
  • Prise en charge intégrée des types QML pour les classes d’ QProtobufMessage s générées automatiquement.
  • Migration vers les données implicitement partagées pour les classes d'QProtobufMessage générées automatiquement. Cela permet d'accéder aux types de messages par valeur depuis un contexte QML sans créer de nombreuses copies.
  • Ajout de la prise en charge des types bien connus d’ Qt Protobuf pour le type ` google.protobuf.Any`.
  • Prise en charge intégrée du type « oneof », un type de type union dans Protobuf, qui n’a pas besoin de contenir une valeur.

Qt Bluetooth Module

  • La bibliothèque Qt Bluetooth ne demande plus les autorisations Bluetooth, mais se contente de vérifier si elles sont accordées ou non. Les applications clientes doivent demander ces autorisations à l’aide de l’API C++ ou de l’API des autorisations QML.
  • Qt fournit désormais un type natif « unsigned int » de 128 bits, appelé `quint128`. Sur les plateformes qui le prennent en charge, le constructeur ` QBluetoothUuid(quint128)` et la méthode ` QBluetoothUuid::toUInt128()` utilisent désormais ce type à la place de la structure personnalisée utilisée par les versions antérieures de Qt. Tant que votre code traite `quint128` comme un type opaque, cette modification est compatible au niveau du code source et des binaires ; toutefois, envisagez d’utiliser les nouvelles surcharges prenant en paramètre ` QUuid::Id128Bytes ` si vous rencontrez des problèmes. Les plateformes qui ne prennent pas en charge les types `int` de 128 bits (telles que MSVC) continuent d’utiliser la structure personnalisée de ` Qt Bluetooth`.

Module Qt Qml

  • Ajout de la prise en charge de la gestion des autorisations d’application via QML. Le Qt Qml Core module expose les fonctionnalités des autorisations d’application Qt C++ à QML via un ensemble de types d’autorisation pouvant être utilisés pour vérifier ou demander des autorisations de manière multiplateforme. Voir Autorisations d’application Qml pour plus d’informations.
  • L’objet XMLHttpRequest a désormais été mis à jour avec deux fonctionnalités supplémentaires, afin de le rapprocher des navigateurs modernes. La propriété responseURL a été ajoutée ; elle permet de vérifier si une redirection s’est produite. De même, la méthode overrideMimeType() a été ajoutée ; elle permet de faire en sorte que l’objet XMLHttpRequest analyse la réponse en fonction d’un type MIME spécifique, plutôt qu’en fonction de ce qui figure dans l’en-tête Content-Type de la réponse.
  • Le QML Language Server prend désormais en charge, dans une première phase, les fonctionnalités « Aller à la définition » et « Rechercher les utilisations ». Il prend également en charge la mise en forme complète des documents.
  • Il est désormais possible d’étendre qmllint à l’aide de plugins. L’API des plugins est actuellement en préversion technique.

Qt Quick Module

  • Ajout de la propriété ` font.features ` pour un accès direct aux fonctionnalités OpenType de la police.
  • TableView dispose d’une propriété ` selectionMode ` permettant de contrôler si une ou plusieurs cellules peuvent être sélectionnées.
  • TreeView dispose d’une propriété ` rootIndex ` permettant d’afficher uniquement une sous-arborescence du modèle.
  • AnimatedImage prend désormais en charge la propriété ` sourceSize `.
  • La variable d’environnement QT_QUICK_FLICKABLE_WHEEL_DECELERATION vous permet de personnaliser la décélération après un défilement avec une souris à molette « cliquable ». Par défaut, l’accélération est désormais désactivée afin que la distance de défilement soit proportionnelle au nombre de « clics » (à moins que la plateforme ne fournisse sa propre accélération) ; mais vous pouvez définir une valeur inférieure à 15 000 pour rétablir l’ancien comportement. La propriété « flickDeceleration » s’applique désormais uniquement aux gestes tactiles.
  • La plupart des propriétés sont désormais FINAL, ce qui signifie qu’elles ne peuvent plus être masquées par la déclaration de nouvelles propriétés portant le même nom. Un avertissement sera émis si une propriété FINAL est masquée. Nous recommandons aux utilisateurs de renommer ces propriétés afin d’éviter tout changement de comportement inattendu.
  • Ajout et exposition d’un certain nombre de fonctions liées à QRhi dans QQuickWindow, QQuickRenderControl et QSGTexture. L’interrogation des objets QRhi, QRhiSwapChain ou QRhiCommandBuffer utilisés par le rendu Qt Quick à l’écran ou hors écran est désormais simplifiée. Certaines fonctions auparavant masquées dans la documentation car elles dépendaient des classes QRhi* sont désormais visibles. Ajout de createTextureFromRhiTexture() à QQuickWindow, servant de contrepartie à createTextureFromImage().
  • Mise à jour des exemples de graphe de scène : ajout de rhiunderqml, remplacement de l’ancien exemple fboitem (exclusivement OpenGL) par un nouvel exemple portable rhitextureitem, et mise à jour de l’exemple customrendernode. Ensemble, ces modifications illustrent les trois façons d’étendre une scène Qt Quick avec un rendu 2D/3D personnalisé de bas niveau (les trois approches étant : underlay/overlay, élément personnalisé s’appuyant sur le rendu vers une texture, élément personnalisé avec QSGRenderNode).
  • Ajout de la propriété Path::simplified pour la simplification automatique des chemins avant leur rendu. Cela correspond à la fonction QPainterPath::simplified().
  • Ajout de la prise en charge de la collecte des horodatages GPU pour le rendu de ` QQuickWindow`. Lorsque cette fonctionnalité est activée via la méthode ` setTimestamps()` de ` QQuickGraphicsConfiguration` ou la variable d’environnement correspondante, les temps de rendu côté GPU apparaîtront dans la sortie de débogage affichée lors de l’activation de catégories de journalisation telles que ` qt.scenegraph.time.renderloop`, ainsi que dans l’élément ` DebugView ` de ` Qt Quick 3D`, en complément des temps de rendu côté CPU. Cette fonctionnalité est actuellement prise en charge sur Direct 3D 11, Metal et Vulkan (à condition que l’implémentation Vulkan sous-jacente prenne en charge les requêtes d’horodatage). La prise en charge des autres API 3D sera introduite dans les prochaines versions.

Qt Quick Controls Module

  • Ajout de la propriété ` live ` à ` SpinBox`. Elle permet de contrôler si la valeur ` value ` est mise à jour lorsque l’utilisateur modifie la valeur ` displayText`.
  • Ajout du signal ` wrapped ` à `Dial`. Ce signal est émis lorsque le cadran effectue une boucle, c’est-à-dire lorsqu’il passe de sa valeur maximale à sa valeur minimale, ou inversement.
  • Ajout des propriétés « startAngle » et « endAngle » au Dial. Ces propriétés contrôlent les angles de début et de fin du cadran en degrés.

Qt Quick Layouts Module

Qt Quick Module « Shapes »

  • Ajout d’un moteur de rendu de courbes expérimental, qui permet de rendre les courbes avec une qualité supérieure à celle du moteur de rendu géométrique par défaut et d’appliquer un lissage sans recourir au MSAA. Il peut être sélectionné à l’aide de la propriété Shape::preferredRendererType.

Qt Quick Module 3D

  • ProceduralTextureDataAjout d’une API QML permettant de créer des géométries de maillage de manière procédurale, appelée TextureData. Auparavant, cela n’était possible qu’en C++ en sous-classant QQuick3DTextureData.
  • Ajout d’une API QML permettant de créer de la géométrie de maillage de manière procédurale, appelée ProceduralMesh. Auparavant, cela n’était possible qu’en C++, en sous-classant QQuick3DGeometry.
  • Il est désormais possible d’importer des fichiers PLY.
  • Ajout de la prise en charge de la création de textures 3D avec ` QQuick3DTextureData`.
  • Ajout d’une prise en charge initiale des extensions de rendu. Il s’agit d’une première étape permettant d’ajouter des passes supplémentaires et de personnaliser les passes de rendu intégrées. ` View3D ` dispose d’une nouvelle propriété appelée `extensions` qui accepte un tableau de sous-classes de ` QQuick3DRenderExtension `. Cette fonctionnalité est également prise en charge par les fonctions d’aide disponibles dans ` QQuick3DExtensionHelpers`.

Module Qt Sql

  • Un plugin pour Mimer SQL a été ajouté
  • MySQL/MariaDB dispose désormais des nouvelles options de connexion MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_TLS_VERSION et MYSQL_OPT_SSL_MODE
  • Le plugin ODBC renvoie désormais tous les codes d’erreur natifs dans QSqlError
  • QSqlQuery dispose de deux nouvelles fonctions : boundValueName() et boundValueNames()

Qt TextToSpeech Module

La classe ` QTextToSpeech ` dispose désormais de quelques fonctionnalités supplémentaires, disponibles avec tous les moteurs :

  • Les applications peuvent ajouter plusieurs blocs de texte à un moteur de synthèse via enqueue.
  • Le nouveau signal aboutToSynthesize est émis juste avant la synthèse d’un bloc de texte.
  • Sélectionner l’une des voix fournies par le moteur à l’aide d’un ensemble de critères est désormais facile grâce à la fonction membre ` findVoices `. Le code QML peut en outre utiliser le type ` VoiceSelector ` comme propriété attachée.

Toutes les nouvelles fonctionnalités ne sont pas disponibles avec tous les moteurs. Les applications peuvent utiliser le nouvel indicateur ` Capabilities ` et la propriété ` engineCapabilities ` pour vérifier lesquelles des nouvelles fonctionnalités suivantes sont prises en charge par le moteur actuellement utilisé :

  • Si le moteur dispose de la fonctionnalité « Synthesize », la propriété « QTextToSpeech » peut désormais synthétiser du texte en données PCM. La fonction « synthesize » peut être utilisée avec une fonction appelable qui reçoit des blocs de données PCM au fur et à mesure de leur synthèse.
  • Si le moteur dispose de la fonctionnalité « WordByWordProgress », la fonction ` QTextToSpeech ` émet le signal ` sayingWord ` pour chaque mot du bloc de texte actuel au fur et à mesure de sa prononciation.

Qt WebEngine Module

  • Ajout d’en-têtes de réponse à QWebEngineLoadingInfo.
  • Possibilité d’ajouter des en-têtes de réponse supplémentaires dans QWebEngineUrlRequestJob.
  • Ajout du drapeau QWebEngineUrlScheme::FetchApiAllowed permettant d’activer l’API Fetch HTML5 pour les schémas d’URL personnalisés.
  • qWebEngineGetDomainAndRegistryFonction () permettant de lire le domaine de premier niveau effectif tel que Chromium/QtWebEngine le perçoit.
  • Ajout du paramètre QWebEngineSettings::DisableReadingFromCanvas pour désactiver la lecture du canvas afin d’offrir une protection supplémentaire contre le fingerprinting.

Qt Widgets Le module

  • QWidget dispose désormais d'une nouvelle surcharge de la fonction setTabOrder() qui accepte une liste d'initialisation, permettant ainsi de définir l'ensemble de la chaîne en un seul appel.
  • QMessageBox::Option permet de contrôler, pour chaque boîte de message, si une boîte de message native doit être utilisée.

Modifications de la plateforme

Plateformes de bureau

macOS

  • La compilation des projets utilisateur ou de Qt pour macOS nécessite désormais au moins la version 3.21.1 de CMake.
  • QMessageBox::setCheckBox() est désormais pris en compte lors de l'utilisation de boîtes de message natives.
  • QFileDialog ne déclenche plus inutilement les boîtes de dialogue d'autorisation.

Plateformes mobiles

Android

  • Ajout de la prise en charge de FileProvider lors de l'utilisation de ` QDesktopServices::openUrl()`.
  • Ajout d’AndroidX par défaut (une dépendance pour FileProvider).
  • Introduction de la politique CMake QTP0002 pour les propriétés de cible spécifiques à Android.
  • Mises à jour de la liste des exemples pris en charge sur Android.
  • Android 13 est désormais la version maximale prise en charge
  • Mise à jour de Gradle vers la version 8.3.0.
  • QFileDialog Prend en compte tous les filtres de nom fournis, et pas seulement celui sélectionné.
  • Mise à jour du niveau SDK de la cible Android à 33 pour répondre aux exigences du Play Store pour 2023.

iOS

  • Ajout de la prise en charge de ` QWindow::setMask()` pour le masquage du rendu et de la saisie.
  • Ajout de la prise en charge des fenêtres externes, pour l'intégration de UIViews dans des QWindows.

Plateformes embarquées

Boot to Qt

  • Prise en charge de Yocto 4.2 (mickledore) ajoutée.
  • Les niveaux de prise en charge du matériel cible ont été mis à jour avec de nouvelles cartes prises en charge :
    • Ajout de la prise en charge de niveau 1 pour la carte i.MX 93 d'NXP.
    • Ajout de la prise en charge de niveau 1 pour la carte Jetson AGX Xavier.
    • Ajout de la prise en charge de niveau 3 pour la carte i.MX 8QuadXPlus d'NXP.
    • Ajout du support de niveau 3 pour la carte Toradex Apalis iMX8.
  • Les cibles Toradex et ST utilisent désormais la dernière version LTS de Yocto (kirkstone).

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