Nouveautés de Qt 6.3
Modules nouveaux et réintroduits dans Qt 6.3
Qt 6.3 ajoute le module suivant :
- Qt Language Server : implémente la spécification du protocole Language Server et le protocole JsonRpc 2.0. Ce module ne contient pas d'API publique.
Qt 6.3 réintroduit les modules suivants qui n'étaient pas présents dans Qt 6.2. Tous les modules répertoriés ont été portés vers Qt 6 et le système de compilation CMake.
- Qt PDF (en avant-première technologique)
Une liste plus détaillée des modifications apportées à chaque module est disponible dans la section Modifications apportées aux modules Qt dans Qt 6.
Nouvelles fonctionnalités de Qt 6.3
Qt Core Module
- Ajout des fonctions ` QtFuture::whenAll()` et ` QtFuture::whenAny()` permettant de combiner plusieurs `futures`.
- Ajout des surcharges de QDir::mkdir() et QFile::open() acceptant un argument « permission ».
- QMetaType Il est désormais possible de convertir n'importe quel ` QFuture<T>` en ` QFuture<void>`.
- Ajout de la méthode ` QDirIterator::nextFileInfo()`, permettant de passer à la page suivante et d’obtenir toutes les informations sur le fichier.
- QLocaleLes mappages des codes de langue vers et depuis les valeurs de type `Language` disposent désormais de surcharges spécifiant les types de codes ISO 639 à prendre en compte.
- QRegularExpressionMatch hasCaptured dispose désormais de méthodes () permettant de vérifier si un groupe donné a bien été capturé.
- QProcessEnvironment a gagné une nouvelle énumération et un nouveau constructeur qui vous permettent de choisir si l’environnement du processus doit être hérité du processus parent lorsqu’un QProcess correspondant est lancé.
Avertissement : dans les anciennes versions de Qt, le comportement par défaut était l’héritage, bien que la documentation indiquât le contraire. Qt 6.3 modifie le comportement du constructeur par défaut pour qu’il corresponde effectivement à la documentation. Ainsi, le lancement d’un processus « QProcess » avec un objet ` QProcessEnvironment ` créé par ` QProcessEnvironment()` s’effectuera dans un environnement vide. Utilisez ` QProcessEnvironment` (QProcessEnvironment::InheritFromParent) pour revenir à l’ancien comportement.
De plus, la méthode inheritsFromParent() a été ajoutée pour vérifier si une instance a été construite selon la nouvelle méthode.
- QVarLengthArray dispose désormais des méthodes emplace() et emplace_back().
- Les formats d’heure utilisés par les méthodes QLocale, QTime et QDateTime pour l’analyse et la sérialisation reconnaissent désormais les spécificateurs de format « aP » et « Ap » permettant d’obtenir un indicateur AM/PM, en utilisant la casse appropriée à la locale pour cet indicateur, alors qu’auparavant, l’auteur d’un format d’heure devait choisir une casse susceptible d’entrer en conflit avec la locale de l’utilisateur. Pour QTime et QDateTime, les paramètres régionaux sont toujours définis sur C, dont les indicateurs sont en majuscules. Pour QLocale, la casse correspondra désormais à celle de amText() ou pmText(). Auparavant, « aP » aurait été interprété comme un indicateur en minuscule suivi d’un « P », et « Ap » comme un indicateur en majuscule suivi d’un « p ». Le « P » ou le « p » sera désormais traité comme faisant partie du spécificateur de format : si vous souhaitez conserver le comportement antérieur, utilisez « APp » ou « apP » comme spécificateur de format, ou placez le « p » ou le « P » entre guillemets dans le format. Les spécificateurs « a », « ap », « A » et « AP » utilisés auparavant ne sont pas affectés.
- QDebug peut désormais diffuser des objets de type « QVarLengthArray ».
- QObject::findChildren() dispose désormais d’une surcharge ne prenant aucun nom.
- Des surcharges et des noms de méthodes ont été ajoutés à ` QSemaphore ` pour une meilleure compatibilité avec `std::counting_semaphore` et `std::chrono`.
- QJsonValue dispose désormais de constructeurs rvalue acceptant QJsonArray et QJsonObject.
- QCborMap::fromJsonObject() et QCborArray::fromJsonArray() disposent désormais de surcharges rvalue.
- Ajout de la méthode QByteArrayView::trimmed() pour supprimer les espaces de début et de fin.
- Ajout de méthodes d'analyse des nombres à ` QByteArrayView`.
- Ajout des méthodes isValidUtf8() à QByteArray, QByteArrayView et QUtf8StringView.
- Ajout de la méthode ` QCryptographicHash::resultView()` pour fournir une vue sur la méthode ` result()`.
- QStringBuilder prend désormais en charge QByteArrayView.
- QUuid peut désormais être construit à partir d’un QAnyStringView.
- QLocale dispose désormais d’un constructeur acceptant un QStringView.
- QByteArrayList::join() dispose désormais d’une surcharge acceptant un QByteArrayView.
- QCryptographicHash::addData() dispose désormais d’une surcharge prenant un QByteArrayView.
- qSwap() est désormais constexpr.
- Ajout d’une nouvelle API CMake publique :
- pour configurer les paramètres par défaut à l'échelle du projet : qt_standard_project_setup()
- pour le déploiement d’applications : qt_generate_deploy_app_script() (en avant-première technologique)
- pour générer un fichier qt.conf au moment de l'installation : qt_deploy_qt_conf() (en avant-première technologique)
- pour déployer les dépendances d'exécution lors de l'installation : qt_deploy_runtime_dependencies() (en préversion technologique)
- pour effectuer des tâches spécifiques à la plateforme associées à un projet Qt : qt_finalize_project() (en avant-première technologique)
Qt GUI Module
- L'appel de la fonction ` QGuiApplication::setLayoutDirection()` avec une valeur non automatique désactive désormais la détection automatique basée sur les traducteurs installés.
- Les gestionnaires d’URL transmis à ` QDesktopServices::setUrlHandler()` doivent désormais être supprimés en appelant ` unsetUrlHandler()` avant leur destruction. Il est déconseillé de compter sur le destructeur du gestionnaire pour les désactiver implicitement.
- QVulkanWindow active désormais toutes les fonctionnalités de Vulkan 1.0 signalées comme prises en charge par le périphérique physique.
Qt Quick Module
- Ajout d’un nouvel élément : ` TreeView`.
- Tous les gestionnaires de pointeurs disposent de propriétés «
parent» configurables. - HoverHandler et WheelHandler disposent d’une propriété
blockingpermettant de contrôler si les événements de survol et de molette se propagent respectivement aux éléments et aux gestionnaires situés derrière l’parentdu gestionnaire. - TapHandler gesturePolicy dispose désormais d’une valeur supplémentaire : ; elle est similaire à , à la différence que même si l’utilisateur effectue un glissement tout en maintenant le point enfoncé, n’est pas réinitialisé pendant le glissement, et le signal est émis quel que soit le seuil de glissement, si l’utilisateur maintient la pression suffisamment longtemps. Cela s’avère utile pour implémenter des composants de type « appuyer-glisser-relâcher » tels que des menus (comme le menu circulaire dans l’exemple des gestionnaires de pointeur) tout en utilisant pour piloter directement une animation d’« ouverture ».
DragWithinBoundsWithinBoundstimeHeld longPressedtimeHeld - QQuickItem::clipRect() fournit désormais la région visible dans l’ viewport (le parent Flickable ou Window), et peut être utilisé pour limiter le nombre de sommets des nœuds du graphe de scène à des fins d’optimisation dans les éléments personnalisés, au prix d’un appel plus fréquent de la fonction updatePaintNode(). Consultez la documentation concernant les nouveaux indicateurs QQuickItem::ItemObservesViewport et QQuickItem::ItemIsViewport.
- Pour économiser de la mémoire et réduire le temps de démarrage, les fonctions ` Text ` et ` TextEdit ` évitent désormais de générer des nœuds du graphe de scène pour les grandes portions de texte invisibles car situées en dehors de la fenêtre d’affichage (`Flickable ` ou ` Window`).
- Text affiche désormais les lignes horizontales issues du code HTML ou Markdown.
- Dans Text, les lignes horizontales ainsi que les lignes de soulignement, de surlignement et de barrage peuvent être colorées à l’aide de règles CSS incluses dans le code source HTML.
import QtQuick Text { textFormat: Text.RichText wrapMode: Text.WordWrap width: 440 font.pointSize: 12 text: `<p><u style="color: green;">green with underline</u> <span style="text-decoration: underline; text-decoration-color: green;"> green underline</span></p> <p><s style="background-color: lightgrey;">plain strikethrough</s> <span style="text-decoration: line-through; text-decoration-color: orange;"> orange strikethrough</span></p> <p><span style="text-decoration: overline;">plain overline</span> <span style="text-decoration: overline; text-decoration-color: red;"> red overline</span></p>` } - QQuickItem::dumpItemTree() a été ajoutée ; elle peut être appelée depuis C++ (de la même manière que QObject::dumpObjectTree()) ou depuis QML, pour afficher la sortie de l'opérateur qDebug pour un élément et tous ses enfants, indentée pour montrer la structure arborescente.
- TapHandler tapped Les signaux ` ` et ` ` prennent désormais deux arguments : l’instance ` ` et l’élément ` ` sur lequel l’interaction a lieu. Si vous avez besoin d’un gestionnaire de signal, vous devez écrire une fonction explicite pour recevoir ces arguments : singleTapped doubleTapped QEventPoint
buttononTapped: function(point, button) { ... } onDoubleTapped: (point, button)=> ... - DragHandler activeTranslation contient désormais la distance parcourue depuis le début du geste de glissement. contient la somme cumulée des déplacements survenus au cours des gestes de glissement suivants, et peut être réinitialisée à des valeurs arbitraires entre deux gestes. persistentTranslation
Qt Quick Controls Module
- Nouveaux contrôles ajoutés : TreeViewDelegate, Calendar, CalendarModel, DayOfWeekRow, MonthGrid, WeekNumberColumn.
Qt Quick Dialogs Module
- Ajout de FolderDialog et MessageDialog. Il s'agit de boîtes de dialogue natives sur les plateformes qui les prennent en charge, et de boîtes de dialogue non natives Qt Quick sur les autres plateformes.
Les boîtes de dialogue non natives prennent en charge tous les styles non natifs : Basic, Fusion, Imagine, Material et Universal.
Qt Widgets Le module
- QToolBar prend désormais en charge le défilement à l’aide d’une molette ou d’un pavé tactile.
Plusieurs nouvelles valeurs d’énumération QStyle sont disponibles pour permettre aux styles de personnaliser d’autres aspects de l’apparence d’une interface utilisateur basée sur des widgets :
- PM_LineEditIconMargin pour personnaliser la marge autour d’une icône dans un QLineEdit.
- SH_Table_AlwaysDrawLeftTopGridLines pour déterminer si les lignes de grille de gauche et du haut doivent toujours être affichées, même lorsque les en-têtes sont masqués.
- SH_SpinBox_SelectOnStep pour déterminer si la modification de la valeur à l’aide des boutons haut/bas doit sélectionner le texte.
- SP_TabCloseButton pour spécifier une icône pour le bouton de fermeture dans l’onglet d’un QTabBar
Qt Network Module
- QNetworkInformation a appris transportMedium. Une propriété qui renvoie le support de transport de l’interface réseau principale.
- QNetworkInformation La propriété isMetered est également prise en charge. Une propriété qui indique si le réseau est limité en volume.
Module Qt Qml
- Ajout d'un compilateur de types QML en préversion technique (
qmltc) qui compile la structure des types QML en C++. - Ajout de plusieurs nouveaux avertissements à qmllint, qui utilise désormais l’infrastructure du compilateur.
- Le module qmlintegration, qui ne contient que des en-têtes, permet de marquer des types pour leur enregistrement dans un module QML, sans ajouter de dépendance à qtdeclarative. Ceux-ci peuvent ensuite être ajoutés à un module QML via la nouvelle API CMake qt_generate_foreign_qml_types().
- qmlcachegen compile désormais les fonctions et expressions appropriées en C++, pour des performances améliorées.
- Ajout de la prise en charge généralisée des propriétés groupées dans Binding et PropertyChanges, permettant d’utiliser la syntaxe des propriétés groupées (par exemple,
someId.someProperty) dans ces contextes. - Introduction des fonctions de base QML Language Server.
- Introduction de la prise en charge des espaces de noms en tant qu’extensions d’autres espaces de noms, via QML_NAMESPACE_EXTENDED.
- Ajout d’une nouvelle API CMake publique :
- pour enregistrer les types externes d’une cible dans un module QML : qt_generate_foreign_qml_types() (en préversion technologique)
- pour compiler du code QML en C++ : qt_target_compile_qml_to_cpp() (en avant-première technologique)
- pour le déploiement d’applications QML : qt_generate_deploy_qml_app_script() (en préversion technologique)
- pour déployer les composants d'exécution des modules QML au moment de l'installation : qt_deploy_qml_imports() (en préversion technologique)
- pour interroger des informations sur un module QML : qt_query_qml_module() (en avant-première technologique)
Qt Quick Module 3D
- Ajout de l'ReflectionProbe, permettant aux modèles d'afficher des reflets.
- Particles3D : nouvel élément `
ParticleCustomShape3D` qui charge des formes émettrices à partir de fichiers binaires CBOR personnalisés. - Particles3D : les particules de type sprite prennent désormais en charge les lumières de l'environnement 3D.
- Particles3D : nouvel élément d'
DynamicBurstpermettant une émission dynamique déclarative et une émission au début ou à la fin d'une traînée. - Ajout d’un composant d’ ResourceLoader permettant de définir explicitement la durée de vie des ressources (en avant-première technologique)
- PrincipledMaterial: Ajout de la prise en charge de ClearCoat, Transmission et Refraction.
- glTF2 : les importateurs prennent désormais en charge les extensions supplémentaires suivantes : KHR_materials_clearcoat, KHR_materials_ior, KHR_materials_transmission, KHR_materials_volume
Qt WebEngine Module
- Compilation désormais effectuée avec Python 3 au lieu de Python 2
- Ajout d’une API permettant de remplacer le menu de sélection tactile QML
- Ajout d’une nouvelle API CMake publique :
- permettant de convertir les dictionnaires Hunspell au format binaire « Qt WebEngine »
.bdic: qt_add_webengine_dictionary()
- permettant de convertir les dictionnaires Hunspell au format binaire « Qt WebEngine »
Qt Data Visualization Module
- Ajout d'une nouvelle propriété wireframeColor permettant de définir la couleur du filaire pour un QSurface3DSeries dans Q3DSurface.
- Ajout d’une nouvelle propriété rowColors permettant de définir différentes couleurs pour les lignes de barres dans Q3DBars.
- Ajout d'une nouvelle propriété d'barSeriesMargin permettant de définir la marge de chaque barre dans Q3DBars.
- Ajout d’une fonction « hasSeries » permettant de vérifier si une série est déjà ajoutée dans QAbstract3DGraph.
- Prise en charge des cartes de hauteur 16 bits.
Qt Positioning Module
- Un nouvel attribut « DirectionAccuracy » a été ajouté pour les plateformes Android et iOS. Il représente la précision du relèvement fourni.
Qt Bluetooth Module
- Extension de l’implémentation Windows de ` QBluetoothLocalDevice`. Elle signale correctement l’état de l’adaptateur et permet de basculer son état. La prise en charge du suivi des appareils connectés/déconnectés fait toujours défaut.
- Extension de l'API ` QBluetoothDeviceInfo ` pour exposer les données du service Bluetooth Low Energy telles qu'elles sont publiées lors de la diffusion.
Qt Wayland Compositor Module
- Ajout d’une API permettant de créer des extensions de shell personnalisées. Pour savoir comment l’utiliser, consultez l’exemple.
- Ajout d’un shell Qt prenant en charge toutes les fonctionnalités du système de fenêtrage disponibles dans Qt.
- Ajout de la prise en charge du protocole d'presentation-time.
- Ajout de la prise en charge de plusieurs protocoles de méthode de saisie sur un même serveur, afin de prendre en charge des clients provenant de différentes sources.
Modifications de la plateforme
Plateformes en préversion technologique
WebAssembly
Plusieurs améliorations ont été apportées à Qt for WebAssembly. Pour plus de détails, consultez la documentation de la plateforme sur Qt for WebAssembly.
- Ajout de la prise en charge du copier-coller d'images et de texte HTML vers le presse-papiers du système.
- Prise en charge SIMD ajoutée. Notez que l'activation de SIMD nécessite de compiler Qt à partir du code source.
- Ajout de la prise en charge de l'appel des fonctions ` QEventLoop::exec()` et ` QThread::exec()` sur des threads secondaires.
- Ajout de la prise en charge de l'appel de ` QEventLoop::exec()` et ` QDialog::exec()` sur le thread principal à l'aide d'Emscripten Asyncify. Notez que l'activation d'Asyncify nécessite de compiler Qt à partir du code source.
- Le glisser-déposer fonctionne désormais pour les versions avec Asyncify activé.
- Ajout de la prise en charge du tunneling des sockets TCP et UDP via WebSockets, à l'aide des sockets TCP POSIX émulés par Emscripten sur WebSockets. Cette prise en charge est limitée aux sockets asynchrones sur le thread principal.
Windows sur ARM
Windows sur ARM64 reste en préversion technologique, car les problèmes liés aux compilations optimisées de Qt n’ont pas encore pu être résolus.
Plateformes mobiles
Android
- La démo d’achats intégrés et l’exemple QML « Qt 3D: Planets » ont bénéficié d’améliorations spécifiques à Android.
- Mise à jour de Gradle vers la version 7.2.0 et du plugin Gradle pour Android (AGP) vers la version 7.0.2 (nécessite le JDK 11 ou une version supérieure).
- Ajout de la cible _make_aab manquante pour les projets Android CMake.
- Ajout d’une compilation multi-ABI pour CMake, voir QT_ANDROID_ABIS.
- Les modules QML sont désormais placés dans un répertoire commun nommé « android-qml » situé dans le dossier de compilation de l'utilisateur. Celui-ci sert de chemin d'importation commun pour l'outil androiddeployqt.
- Le banc d'essai QML fonctionne désormais pour les builds Android.
iOS
- Les projets basés sur CMake génèrent désormais un écran de démarrage par défaut.
Plateformes embarquées
Boot to Qt
- Boot to Qt La pile a été mise à jour pour utiliser Yocto 3.4 (honister).
- Qt PDF et le serveur de langage Qt ont été intégrés à la pile « Boot to Qt ».
Autres
Wayland
- Prise en charge du protocole
DataDeviceV3implémentée. - Mise à niveau de la prise en charge d’
wl_seatvers la version 7. - Ajout de la prise en charge de la sélection du protocole de méthode de saisie, si le serveur prend en charge plusieurs interfaces. Pour ce faire, il suffit de définir QT_WAYLAND_TEXT_INPUT_PROTOCOL sur le nom du protocole.
Liste des modifications apportées à l'API
Ces pages présentent un aperçu des modifications apportées à l'API dans Qt 6.3 :
Ajouts à toutes les versions de Qt 6
Répertorie les nouvelles fonctionnalités de Qt 6.0. | |
Répertorie les nouvelles fonctionnalités de Qt 6.1. | |
Liste des nouvelles fonctionnalités de Qt 6.2. | |
Liste des nouvelles fonctionnalités de Qt 6.3. | |
Liste des nouvelles fonctionnalités de Qt 6.4. | |
Liste des nouvelles fonctionnalités de Qt 6.5. | |
Liste des nouvelles fonctionnalités de Qt 6.6. | |
Liste des nouvelles fonctionnalités de Qt 6.7. | |
Liste des nouvelles fonctionnalités de Qt 6.8. | |
Liste des nouvelles fonctionnalités de Qt 6.9. | |
Liste des nouvelles fonctionnalités de Qt 6.10. | |
Liste des nouvelles fonctionnalités de Qt 6.11. | |
Liste des nouvelles fonctionnalités de Qt 6.12. |
© 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.