Sur cette page

Nouveautés de Qt 6.4

Modules nouveaux et réintroduits dans Qt 6.4

Qt 6.4 ajoute les modules suivants :

  • Qt HTTP Server - Un module permettant d'intégrer un serveur HTTP dans les applications Qt. Ce module est en préversion technologique ; la stabilité de l'API et de l'ABI n'est pas garantie.
  • Qt Quick 3D Physics - Un module QML de haut niveau ajoutant des capacités de simulation physique à Qt Quick 3D.

Qt 6.4 réintroduit le Qt TextToSpeech module issu de Qt 5. Ce module n'était pas présent dans Qt 6.3. Il utilise désormais le système de compilation CMake et fonctionne avec Qt 6.

Vous trouverez plus de détails sur les modifications apportées à chaque module dans la section « Modifications apportées aux modules Qt dans Qt 6 ».

Nouvelles fonctionnalités de Qt 6.4

Qt Core Module

  • Ajout de ` QLatin1StringView ` comme alias de ` QLatin1String`. Il s'agit désormais du nom recommandé pour désigner une vue de chaîne Latin-1.
  • Les constructeurs QLatin1StringView(const char *, qsizetype) et QLatin1StringView(const char *, const char *) ne sont plus explicites.
  • Ajout de l’opérateur littéral _L1 pour créer des littéraux de chaîne et de caractère Latin-1 dans l’espace de noms Qt::Literals::StringLiterals.
  • Ajout des opérateurs littéraux _s et _ba permettant de créer respectivement des littéraux de type QString et QByteArray, dans l’espace de noms Qt::Literals::StringLiterals. Les méthodes _qs et _qba sont désormais obsolètes au profit de _s et _ba.
  • Les méthodes QString::count() et QByteArray::count() sans paramètre ont été dépréciées afin d’éviter toute confusion avec les surcharges d’algorithmes portant le même nom. Elles peuvent être remplacées par les méthodes size() ou length().
  • QStringEncoder Les méthodes ` QStringDecoder ` prennent désormais en charge tous les codecs pris en charge par ICU lorsque Qt est compilé avec le support ICU activé.
  • Dans les classes destinées au développement Android et JNI, QJniObject et QJniEnvironment, des surcharges ont été ajoutées pour les méthodes callMethod, findMethod et autres méthodes similaires. Il est désormais possible d’appeler des fonctions Java et d’enregistrer des méthodes natives sans spécifier de chaîne de signature.
  • La nouvelle fonction modèle ` QJniObject::construct()` permet d’instancier une classe Java depuis le C++ sans spécifier de type ni de chaîne de signature.
  • QByteArray dispose désormais d’une méthode d’instance `percentDecoded()` comme alternative à l’appel de la méthode statique `fromPercentEncoding()` sur l’instance.
  • QTextStream prend désormais en charge l’entrée et la sortie de char16_t.
  • QStringView dispose désormais d’une méthode localeAwareCompare() et peut compter (count()) le nombre d’occurrences d’une sous-chaîne donnée.
  • QDate peut désormais être construit à partir de divers types de structure std::chrono de type année-mois-jour, lorsqu’ils sont disponibles, et dispose d’une méthode addDuration() prenant un std::chrono::days, lorsqu’elle est disponible.
  • QDateTime Elle dispose également d’une méthode addDuration(std::chrono::milliseconds), ainsi que d’opérations arithmétiques permettant d’additionner ou de soustraire des valeurs du même type, d’une méthode difference() renvoyant la différence entre deux valeurs de type QDateTime, et de quelques pseudo-constructeurs statiques acceptant divers types std::chrono décrivant un instant précis.
  • Ajout de la méthode ` QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *)`.
  • QCalendarLa construction par nom accepte désormais QAnyStringView.

Qt GUI Module

Qt Quick Module

  • Plusieurs nouvelles propriétés et fonctions ont été ajoutées à TableView, ce qui améliore la prise en charge de la navigation et de la sélection au clavier, des sélections de lignes et de colonnes, des animations, du positionnement des sous-cellules, et bien plus encore.
  • TreeView prend désormais en charge les sélections et dispose d’une API plus complète pour développer et réduire les nœuds de l’arborescence de manière récursive.
  • QQuickWidget est désormais compatible avec toutes les API graphiques 3D prises en charge (Vulkan, Metal, Direct3D 11) en plus d’OpenGL. Les applications n’ont plus besoin d’imposer le rendu via OpenGL lorsqu’elles utilisent QQuickWidget.
  • Ajout de la prise en charge des tableaux d’échantillonneurs d’images combinés dans les shaders utilisés avec des matériaux personnalisés. Cette fonctionnalité est prise en charge par la nouvelle fonction ` QSGMaterialShader::combinedImageSamplerCount()` et par la sémantique améliorée de l’argument ` texture ` existant de la fonction ` QSGMaterialShader::updateSampledImage()`.
  • Ajout de la prise en charge du changement du mode de rastérisation des polygones de ` solid ` à ` line ` dans ` QSGMaterialShader::GraphicsPipelineState`. (Disponible uniquement lorsque l'API 3D utilisée prend en charge cette fonctionnalité)
  • ShaderEffectSource.format et layer.format n’étaient pas utiles dans les versions précédentes de Qt 6, les anciennes valeurs étant ignorées dans la pratique. Ceci est désormais documenté et de nouvelles valeurs, réellement utiles, ont été introduites, notamment pour permettre de demander des textures en virgule flottante (FP16 ou FP32) au lieu de RGBA8, si souhaité.
  • Ajout de la fonction QQuickRenderTarget::fromPaintDevice(), permettant également de rediriger la sortie d’une fonction ` QQuickWindow ` à l’aide du backend ` software `.
  • Ajout de surcharges dans ` QQuickRenderTarget ` permettant de spécifier le format natif de l’objet texture ou image. Cela s’avère pertinent dans certains cas d’utilisation avancés où l’on doit travailler avec des textures natives qui ne sont pas au format RGBA8. Notez que seuls les formats natifs pris en charge par l’infrastructure de rendu de Qt sont acceptés.
  • Ajout de la méthode ` setMirrorVertically()` à ` QQuickRenderTarget`, qui permet de demander au moteur de rendu ` Qt Quick ` de modifier ses matrices afin d’obtenir des résultats inversés verticalement lors de la redirection du rendu basé sur l’API 3D vers une texture.
  • Qt Quick Sous Windows, le système tentera désormais d’utiliser la plateforme de rastérisation logicielle de Direct 3D (WARP) si le périphérique graphique principal n’est pas compatible avec Qt, sans qu’il soit nécessaire de définir manuellement des variables d’environnement.
  • Ajout d’heuristiques simples à la boucle de rendu threaded du graphe de scène Qt Quick pour détecter les problèmes de limitation liés à un vsync défaillant. Lorsque les images sont rendues/présentées trop rapidement, sans bloquer le thread de rendu, le système bascule désormais automatiquement vers l’approche classique basée sur une minuterie pour l’exécution des animations, empêchant ainsi les animations QML de s’exécuter trop rapidement.
  • Ajout d’une FrameAnimation pour les animations personnalisées. Permet d’exécuter des scripts personnalisés en synchronisation avec les images de l’animation.

Qt Quick Controls Module

  • Ajout d’un nouveau style d’aspect natif pour iOS, « iOS Style », en tant qu’aperçu technique.
  • TreeViewDelegate TreeView dispose de trois nouvelles propriétés indiquant si l’élément est actif, sélectionné ou mis en surbrillance.

Qt Quick Dialogs Module

  • Ajout de la méthode ` ColorDialog`. Il s’agit d’une boîte de dialogue native sur les plateformes qui la prennent en charge, et d’une boîte de dialogue non native Qt Quick sur les autres plateformes.

    La boîte de dialogue non native prend en charge tous les styles non natifs : Basic, Fusion, Imagine, Material et Universal.

Qt Widgets Le module

  • QFormLayout dispose de nouvelles fonctions membres ` isRowVisible()` et ` setRowVisible()`, avec des surcharges permettant de masquer et d’afficher des lignes par index, par widget de saisie ou par disposition des lignes.
  • QKeySequenceEdit dispose d’une nouvelle propriété clearButtonEnabled. Utilisez-la pour contrôler si le widget affiche un bouton « Effacer » permettant à l’utilisateur d’effacer le contenu du champ d’édition.
  • QWizard dispose d’un nouvel emplacement, setCurrentId, qui permet aux applications de passer à une page sans passer par les pages situées entre la page actuelle et la page cible.

Qt Network Module

  • Ajout de ` QSslServer`. Cela simplifie la création d’un serveur qui communique exclusivement via TLS.
  • QNetworkInformation dispose désormais des méthodes `loadBackendByFeatures(Features)` et `loadBackendByName(QStringView)`, destinées à remplacer à terme les fonctions surchargées correspondantes `load(Features)` et `QStringView`, qui sont désormais marquées comme obsolètes.

Qt Test Module

  • QTestEventLoop::enterLoopMSecs() utilise désormais un PreciseTimer si le délai d’expiration est inférieur à une seconde.
  • Les implémentations personnalisées de QTest::compare() doivent désormais modifier tous les appels à QTest::compare_helper() afin d’utiliser l’une des deux nouvelles surcharges à la place de l’ancienne, qui est désormais obsolète (afin de ne générer les chaînes représentant les valeurs dans un rapport d’échec que si la vérification échoue réellement).
  • Ajout de la fonction ` QAbstractItemModelTester::setUseFetchMore()`.
  • Les nouvelles macros QCOMPARE_{EQ,NE,GT,GE,LT,LE}() prennent en charge des comparaisons avec un rapport similaire à celui de ` QCOMPARE()`. La macro EQ effectue des comparaisons exactes, sans les personnalisations d’ QCOMPARE()). Ces macros sont également disponibles avec les variantes habituelles QTRY_COMPARE_*() et QTRY_COMPARE_*_WITH_TIMEOUT().

Module Qt Qml

  • Langage QML
    • Vous pouvez désormais enregistrer des types de valeurs personnalisés avec des noms. Autrement dit, l’argument de QML_VALUE_TYPE n’est plus ignoré. Il doit être en minuscules. Une fois enregistrés, vous pouvez déclarer des propriétés de vos propres types de valeurs en QML.
    • Vous pouvez désormais stocker n’importe quel type de valeur nommé dans une liste en QML. Par exemple, list<rect> en QML correspond à un QList<QRectF> en C++. Cela évite d’avoir à utiliser var pour ces propriétés ou à encapsuler leurs éléments dans des objets.
    • Le nouveau pragma `ComponentBehavior` vous permet de spécifier si les composants définis dans un fichier QML peuvent être utilisés en dehors de leur contexte de création. Si ce n’est pas le cas (`pragma ComponentBehavior: Bound`), ` Qt Quick Compiler ` peut alors optimiser davantage votre code.
  • Système de modules
    • Amélioration de la directive « import » dans les fichiers qmldir avec prise en charge des importations par défaut, permettant aux modules de spécifier des importations que qmllint doit considérer comme obligatoires bien qu’elles soient facultatives.
  • Compilateur de types QML (qmltc)
    • Couverture étendue du langage QML
  • Compilateur de scripts QML (qmlsc, qmlcachegen)
    • Diverses opérations sur des listes de types de valeurs sont désormais compilées en C++.
    • Le code mort et les stockages morts sont désormais optimisés de manière plus agressive.
    • Les conversions de types s'effectuent désormais à l'endroit où la valeur est écrite, et non plus à l'endroit où elle est lue. Si la valeur est lue plusieurs fois, cela permet un gain de vitesse.
  • Linter QML (qmllint)
    • Ajout de la prise en charge des plugins à qmllint pour permettre des diagnostics et des comportements spécifiques aux modules.
    • Ajout de nouveaux avertissements concernant l'utilisation correcte de ` QtQuick ` et QtQuick.Controls
  • QML Language Server (qmlls)
    • Ajout de la prise en charge des suggestions de complétion
    • Ajout d’actions de code permettant de corriger certains avertissements/conseils du linter
    • Déplacement de l'exécutable vers libexec
  • Nettoyage de l'API CMake :

Qt Quick Module 3D

  • Ajout d’un aperçu de la prise en charge du « baking » des lightmaps. Cela fournit une solution d’éclairage global statique avec des lightmaps pré-générées à l’aide du ray tracing. Voir Lightmaps et éclairage global pour plus de détails.
  • Ajout de la fonction ` SpecularGlossyMaterial ` pour permettre l’utilisation du workflow spéculaire/brillance à la place de celui de métallicité/rugosité.
  • Ajout du type « LineParticle3D » qui permet de créer des particules de sprite en forme de ligne.
  • Ajout de la propriété « Model.castsReflection » pour contrôler si un modèle est rendu par des sondes de réflexion et s’il peut être vu dans les reflets. La même propriété est également introduite pour « sprite particles ».
  • Ajout de la propriété « ReflectionProbe.boxOffset » pour déplacer la boîte par rapport à la position de la sonde sans affecter la position du point de capture.
  • Ajout de la propriété ` ReflectionProbe.debugView ` pour afficher un cube permettant de visualiser la boîte de la sonde.
  • Ajout de la fonction « HeightFieldGeometry » pour permettre la création d’une géométrie de champ de hauteur à partir d’un fichier image.
  • Ajout de la propriété CubeMapTexture pour permettre aux matériaux personnalisés et aux effets de post-traitement de fonctionner avec des textures de cube map dans les shaders. L’entrée est soit un conteneur .ktx contenant les données d’image pour les 6 faces, soit 6 fichiers image individuels.
  • Ajout de la prise en charge du rendu d’une skybox à partir d’une carte cubique (cubemap) au lieu de la sonde de lumière (light probe). Cette option peut être activée en définissant l’ SceneEnvironment.SkyBoxCubeMap du mode d’arrière-plan.
  • Ajout de l’ ProceduralSkyTextureData permettant de générer de manière procédurale une sonde lumineuse HDR ou une texture de skybox.
  • Amélioration du rendu des ombres pour les lumières ponctuelles et les projecteurs.
  • Ajout de la propriété renderFormat à View3D pour permettre de spécifier le format de la texture de fond lorsque l’ View3D utilise son mode de rendu hors écran (par défaut). Les valeurs disponibles sont les mêmes que pour ShaderEffectSource.format (qui a également été révisé dans la version 6.4). Cela permet d’utiliser des textures en virgule flottante à la place du format RGBA8 par défaut.
  • La prise en charge de l’importation de fichiers UIP a été supprimée. Le mappage entre les anciennes fonctionnalités d’ Qt 3D Studio et d’ Qt Quick 3D posait déjà des problèmes dans les versions précédentes. Par conséquent, Qt 6.4 supprime la prise en charge des fichiers .uip dans l’outil balsam.

Le module Qt Connectivity

  • QNdefMessage n’est plus exporté. Cette classe hérite publiquement d’ QList, mais QList n’est pas conçu pour être hérité par une classe exportée.

    Avertissement : cette modification n'est pas rétrocompatible, mais elle permettra d'éviter de futures ruptures de rétrocompatibilité.

  • Dans Qt Bluetooth, diverses énumérations d’erreurs ont été étendues avec de nouveaux codes d’erreur représentant une erreur de droits d’accès manquants. Actuellement, ces codes sont utilisés sur Android et macOS/iOS. Voir QBluetoothLocalDevice::MissingPermissionsError à titre d’exemple.

Qt WebEngine Module

Modifications de la plateforme

WebAssembly

Qt est désormais entièrement pris en charge sur la plateforme WebAssembly. Pour plus de détails, consultez la documentation de la plateforme sur Qt for WebAssembly.

Plateformes mobiles

Android

  • Mise à jour de Gradle vers la version 7.4.2 et du plugin Gradle pour Android vers la version 7.2.1.
  • Mise à jour du NDK vers la version r23b (23.1.7779620).
  • Ajout des variables CMake QT_ANDROID_SIGN_APK et QT_ANDROID_SIGN_AAB pour compiler des paquets signés directement depuis CMake.
  • L'accessibilité Android prend désormais en charge les événements de défilement.
  • Amélioration de la vitesse de chargement des ressources pour les applications Android.

Plateformes embarquées

Boot to Qt

  • Boot to Qt La pile a été mise à jour pour utiliser Yocto 4.0.3 (kirkstone).
  • NXP Ajout de l’EVK i.MX8M Plus LPDDR4 en tant que nouveau dispositif de référence.

QNX

WebOS

  • La compatibilité de Qt 6.4 avec LG webOS OSE 2.18.0 (Qt pour webOS) a été vérifiée.

Liste des modifications apportées aux API

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

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