Sur cette page

Nouveautés de Qt 6.4

Modules nouveaux et restaurés dans Qt 6.4

Qt 6.4 ajoute les modules suivants :

  • Qt HTTP Server - Un module pour intégrer un serveur HTTP dans les applications Qt. Ce module est en avant-première 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 module 3D Physics de Qt 5. Qt TextToSpeech Ce module n'était pas présent dans Qt 6.3. Il utilise maintenant le système de construction CMake et fonctionne avec Qt 6.

Vous trouverez plus de détails sur les changements apportés à chaque module dans Changements apportés aux modules Qt dans Qt 6.

Nouvelles fonctionnalités de Qt 6.4

Qt Core Module

  • Ajout de QLatin1StringView comme alias pour QLatin1String. C'est maintenant le nom recommandé pour se référer à une vue de chaîne de caractères en Latin-1.
  • Les constructeurs QLatin1StringView(const char *, qsizetype) et QLatin1StringView(const char *, const char *) sont rendus non explicites.
  • Ajout de l'opérateur littéral _L1 pour créer des chaînes et des caractères littéraux en latin-1 dans l'espace de noms Qt::Literals::StringLiterals.
  • Ajout des opérateurs littéraux _s et _ba pour la création des littéraux QString et QByteArray respectivement, dans l'espace de noms Qt::Literals::StringLiterals. Suppression de _qs et _qba au profit de _s et _ba.
  • Déclassé QString::count() et QByteArray::count() qui ne prennent pas de paramètres, pour éviter toute confusion avec les surcharges d'algorithme du même nom. Elles peuvent être remplacées par les méthodes size() ou length().
  • QStringEncoder et QStringDecoder supportent désormais tous les codecs supportés par ICU lorsque Qt est construit avec le support ICU activé.
  • Dans les classes pour Android et le développement JNI, QJniObject et QJniEnvironment, des surcharges ont été ajoutées pour callMethod, findMethod et des 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 à partir de C++ sans spécifier de type ou 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 supporte désormais l'entrée et la sortie de char16_t.
  • QStringView dispose désormais d'une méthode localeAwareCompare() et peut compter() le nombre de fois qu'une sous-chaîne donnée apparaît.
  • QDate peut maintenant être construit à partir de différents types de structures std::chrono year-month-day, lorsqu'elles sont disponibles, et dispose d'une méthode addDuration() prenant un std::chrono::days, lorsqu'elle est disponible.
  • QDateTime De même, un addDuration(std::chrono::millisecondes) a été ajouté, ainsi que l'arithmétique pour ajouter ou soustraire le même type, une différence de valeurs QDateTime le retournant, et quelques pseudo-constructeurs statiques prenant divers types std::chrono décrivant un moment dans le temps.
  • Ajout de QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *).
  • QCalendarLa construction par nom de std::chrono::time_zone * accepte maintenant QAnyStringView.

Qt GUI Module

Qt Quick Module

  • Plusieurs nouvelles propriétés et fonctions ont été ajoutées à TableView afin d'améliorer 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, etc.
  • TreeView Le module prend désormais en charge les sélections et dispose d'une API plus large pour développer et réduire les nœuds de l'arbre de manière récursive.
  • QQuickWidget est désormais fonctionnel 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 avec 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 prise en charge est assurée par la nouvelle fonction QSGMaterialShader::combinedImageSamplerCount() et la sémantique améliorée de l'argument existant texture de QSGMaterialShader::updateSampledImage().
  • Ajout de la prise en charge du changement du mode de tramage des polygones de solid à line dans QSGMaterialShader::GraphicsPipelineState(disponible uniquement si l'API 3D utilisée le prend en charge).
  • ShaderEffectSource.format et layer.format n'étaient pas utiles dans les versions précédentes de Qt 6, les valeurs héritées étant ignorées dans la pratique. Ceci est maintenant documenté et de nouvelles valeurs réellement utiles sont introduites, en particulier pour permettre de demander des textures en virgule flottante (FP16 ou FP32) au lieu de RGBA8, si désiré.
  • Ajout de QQuickRenderTarget::fromPaintDevice(), permettant de rediriger la sortie d'un QQuickWindow en utilisant également le backend software.
  • Ajout de surcharges dans QQuickRenderTarget qui permettent de spécifier le format natif de la texture ou de l'objet image. Ceci est utile dans certains cas d'utilisation avancés lorsque l'on doit travailler avec des textures natives qui ne sont pas RGBA8. Notez que seuls les formats natifs supportés par l'infrastructure de rendu de Qt sont acceptés.
  • Ajout de setMirrorVertically() à QQuickRenderTarget, qui permet de demander au moteur de rendu Qt Quick de modifier ses matrices pour obtenir des résultats inversés verticalement lors de la redirection du rendu basé sur l'API 3D dans une texture.
  • Qt Quick windows tentera désormais d'utiliser la plateforme de rastérisation logicielle de Direct 3D (WARP) dans le cas où le périphérique graphique principal n'est pas compatible avec Qt 3D, sans avoir à recourir à la configuration manuelle de variables d'environnement.
  • Ajout d'une heuristique simple à la boucle de rendu threaded de la scène Qt Quick pour reconnaître un étranglement basé sur vsync. Lorsque les images sont rendues/présentées trop rapidement, sans bloquer le thread de rendu, il passe maintenant automatiquement à l'approche régulière basée sur le minuteur pour exécuter les animations, empêchant ainsi les animations QML de s'exécuter trop rapidement.
  • Ajout de FrameAnimation pour les animations personnalisées. Permet d'exécuter des scripts personnalisés en synchronisation avec les images d'animation.

Qt Quick Module de contrôle

  • Ajout d'un nouveau style natif pour iOS, iOS Style, en tant que Tech Preview.
  • TreeViewDelegate Le module de contrôle a trois nouvelles propriétés qui décrivent s'il est en cours, sélectionné ou en surbrillance dans le site TreeView.

Qt Quick Module Dialogues

  • Ajout de ColorDialog. Il s'agit d'une boîte de dialogue native sur les plates-formes qui la prennent en charge et d'une boîte de dialogue non native Qt Quick sur les autres plates-formes.

    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 possède de nouvelles fonctions membres isRowVisible() et setRowVisible(), avec des surcharges qui permettent de masquer et d'afficher les lignes par index, widget d'entrée ou disposition des lignes.
  • QKeySequenceEdit a une nouvelle propriété clearButtonEnabled. Utilisez-la pour contrôler si le widget affiche un bouton d'effacement qui permet à l'utilisateur d'effacer l'édition.
  • QWizard dispose d'un nouveau slot, setCurrentId, qui permet aux applications de se déplacer vers une page sans visiter 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 uniquement via TLS.
  • QNetworkInformation a maintenant loadBackendByFeatures(Features) et loadBackendByName(QStringView), destinées à remplacer éventuellement les fonctions surchargées correspondantes load(Features/QStringView) qui sont maintenant marquées comme dépréciées.

Qt Test Module

  • QTestEventLoop::enterLoopMSecs() utilise maintenant un PreciseTimer si le timeout est inférieur à une seconde.
  • Les implémentations personnalisées de QTest::compare() doivent maintenant réviser tous les appels à QTest::compare_helper() pour utiliser l'une des deux nouvelles surcharges au lieu de l'ancienne, qui est maintenant dépréciée (de manière à ne générer les chaînes de caractères représentant les valeurs dans un rapport d'échec que si la vérification échoue réellement).
  • Ajout de QAbstractItemModelTester::setUseFetchMore().
  • Les nouvelles macros QCOMPARE_{EQ,NE,GT,GE,LT,LE}() prennent en charge les comparaisons avec des rapports similaires à ceux de QCOMPARE(). La macro EQ effectue des comparaisons exactes, sans les personnalisations de QCOMPARE(). Elles sont également fournies 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. Cela signifie que l'argument de QML_VALUE_TYPE n'est plus ignoré. Il doit être en minuscules. Une fois enregistrés, vous pouvez déclarer les 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 est comparable à QList<QRectF> en C++. Il n'est donc plus nécessaire d'utiliser var pour ces propriétés ou d'envelopper 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), le compilateur Qt Quick peut mieux optimiser votre code.
  • Système de modules
    • Amélioration de la directive import dans les fichiers qmldir avec la prise en charge des importations par défaut, permettant aux modules de spécifier les importations que qmllint devrait assumer bien qu'elles soient facultatives.
  • Compilateur de types QML (qmltc)
    • Extension de la couverture du langage QML
  • Compilateur de scripts QML (qmlsc, qmlcachegen)
    • Diverses opérations sur des listes de types de valeurs sont maintenant compilées en C++.
    • Le code mort et les magasins morts sont maintenant optimisés de manière plus agressive.
    • Les conversions de type se produisent maintenant à l'endroit où une valeur est écrite, et non à l'endroit où elle est lue. Si la valeur est lue plusieurs fois, c'est plus rapide.
  • Linter QML (qmllint)
    • Ajout du support 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 de QtQuick.Controls
  • QML Language Server (qmlls)
    • Ajout du support des complétions
    • Ajout d'une correction de l'action du code pour certains avertissements/indices de 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 lightmap baking. Ceci fournit une solution statique d'illumination globale avec des lightmaps pré-générées en utilisant le raytracing. Voir Lightmaps et Global Illumination pour plus de détails.
  • Ajout de SpecularGlossyMaterial pour permettre l'utilisation du workflow specular/glossiness au lieu de metalness/roughness.
  • Ajout du type LineParticle3D qui permet de créer des particules de sprites en forme de ligne.
  • Ajout de la propriété Model.castsReflection pour contrôler si un modèle est rendu par les sondes de réflexion et s'il peut être vu dans les réflexions. 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 visualisant la boîte de la sonde.
  • Ajout de HeightFieldGeometry pour permettre la création d'une géométrie de champ de hauteur à partir d'un fichier image.
  • Ajout de CubeMapTexture pour permettre aux matériaux personnalisés et aux effets de post-traitement de travailler avec les textures de la carte cubique dans les shaders. L'entrée est soit un conteneur .ktx avec des données d'image pour les 6 faces, soit 6 fichiers d'image individuels.
  • Ajout d'un support pour le rendu d'une boîte à ciel à partir d'une cubemap au lieu de la sonde de lumière. Ceci peut être demandé en définissant le mode d'arrière-plan SceneEnvironment.SkyBoxCubeMap.
  • Ajout de ProceduralSkyTextureData pour générer de manière procédurale une texture HDR de sonde lumineuse ou de boîte à ciel.
  • Amélioration du rendu des ombres pour les lumières ponctuelles et les spots.
  • Ajout de la propriété renderFormat à View3D pour permettre de spécifier le format de la texture d'arrière-plan lorsque View3D utilise son mode de rendu hors écran (par défaut). Les valeurs disponibles sont les mêmes que pour ShaderEffectSource.format (qui est également révisé dans la version 6.4). Cela permet d'utiliser des textures en virgule flottante au lieu du RGBA8 par défaut.
  • La prise en charge de l'importation de fichiers UIP a été supprimée. La correspondance entre les anciennes fonctionnalités de Qt 3D Studio et Qt Quick 3D était déjà problématique dans les versions précédentes. Par conséquent, Qt 6.4 supprime la prise en charge des fichiers .uip de l'outil balsam.

Le module de connectivité Qt

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

    Attention : Ce n'est pas rétrocompatible, mais cela permettra d'éviter les ruptures de BC à l'avenir.

  • Dans Qt Bluetooth, plusieurs énumérations d'erreurs sont étendues avec de nouveaux codes d'erreur qui représentent une erreur de permissions manquantes. Actuellement, ces codes sont utilisés sur Android et macOS/iOS. Voir QBluetoothLocalDevice::MissingPermissionsError comme exemple.

Qt WebEngine Module

Changements au niveau de la plateforme

WebAssembly

Qt est maintenant entièrement supporté par la plateforme WebAssembly. Voir la documentation de la plateforme à Qt for WebAssembly pour plus de détails.

Plateformes mobiles

Android

  • Mise à jour de Gradle vers la version 7.4.2 et du plugin Android Gradle 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 construire des paquets signés directement depuis CMake.
  • L'accessibilité Android est maintenant consciente des événements de défilement.
  • Amélioration de la vitesse de chargement des actifs 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 i.MX8M Plus LPDDR4 EVK ajouté comme nouveau périphérique de référence.

QNX

WebOS

  • Qt 6.4 a été vérifié pour fonctionner avec LG webOS OSE 2.18.0(Qt pour webOS).

Liste des changements d'API

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