Nouveautés de Qt 6.3
Modules nouveaux et restaurés dans Qt 6.3
Qt 6.3 ajoute le module suivant :
- Qt Language Server : implémente la spécification du protocole du serveur de langue 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 listés ont été portés sur Qt 6 et le système de construction CMake.
- Qt PDF (en avant-première technologique)
Une liste plus détaillée des changements apportés à chaque module peut être trouvée dans Changements apportés aux modules de Qt dans Qt 6.
Nouvelles fonctionnalités de Qt 6.3
Qt Core Module
- Ajout des fonctions QtFuture::whenAll() et QtFuture::whenAny() pour combiner plusieurs futures.
- Ajout des surcharges QDir::mkdir() et QFile::open() acceptant un argument de permission.
- QMetaType peut maintenant convertir n'importe quel QFuture<T> en QFuture<void>.
- Ajout de QDirIterator::nextFileInfo(), pour avancer et obtenir des informations complètes sur les fichiers.
- QLocaleLes mappages des codes de langue vers et à partir des valeurs de langue ont maintenant des surcharges spécifiant les types de code ISO 639 à prendre en compte.
- QRegularExpressionMatch a maintenant des méthodes hasCaptured() pour tester si un groupe donné a é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 respectif est lancé.
Attention : Dans les versions antérieures de Qt, le comportement par défaut était d'hériter, même si la documentation indiquait que ce n'était pas le cas. Qt 6.3 modifie le comportement du constructeur par défaut pour qu'il corresponde à la documentation. C'est-à-dire que le lancement d'un QProcess avec un QProcessEnvironment créé par QProcessEnvironment() sera lancé dans un environnement vide. Utilisez QProcessEnvironment(QProcessEnvironment::InheritFromParent) pour revenir à l'ancien comportement.
Nous avons également ajouté la méthode inheritsFromParent() pour tester une instance construite de la nouvelle manière.
- QVarLengthArray a maintenant les méthodes emplace() et emplace_back().
- Les formats horaires utilisés par l'analyse syntaxique et la sérialisation de QLocale, QTime et QDateTime reconnaissent désormais les spécificateurs de format 'aP' et 'Ap' pour obtenir un indicateur AM/PM, en utilisant la casse locale appropriée pour l'indicateur, alors qu'auparavant l'auteur d'un format horaire devait choisir une casse susceptible d'entrer en conflit avec la locale de l'utilisateur. Pour QTime et QDateTime, la locale est toujours C, dont les indicateurs sont en majuscules. Pour QLocale, la casse correspondra désormais à celle de amText() ou pmText(). Auparavant, 'aP' aurait été lu comme un indicateur minuscule suivi d'un 'P' et 'Ap' comme un indicateur majuscule suivi d'un 'p'. Le 'P' ou le 'p' sera désormais traité comme faisant partie du spécificateur de format : si le comportement antérieur est souhaité, il faut soit utiliser 'APp' ou 'apP' comme spécificateur de format, soit mettre le 'p' ou le 'P' entre guillemets dans le format. Les spécificateurs antérieurs 'a', 'ap', 'A' et 'AP' ne sont pas affectés.
- QDebug peut maintenant streamer les objets QVarLengthArray.
- QObject::findChildren() a maintenant une surcharge qui ne prend pas de nom.
- Ajout de surcharges et de noms de méthodes à QSemaphore pour une meilleure compatibilité avec std::counting_semaphore et std::chrono.
- QJsonValue a maintenant des constructeurs rvalue prenant QJsonArray et QJsonObject.
- QCborMap::fromJsonObject() et QCborArray::fromJsonArray() ont maintenant des surcharges rvalue.
- Ajout de QByteArrayView::trimmed() pour éliminer 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 QCryptographicHash::resultView() pour fournir une vue sur result().
- QStringBuilder prend désormais en charge QByteArrayView.
- QUuid peut maintenant être construit à partir de QAnyStringView.
- QLocale a maintenant un constructeur prenant un QStringView.
- QByteArrayList::join() a maintenant une surcharge prenant QByteArrayView.
- QCryptographicHash::addData() a maintenant une surcharge prenant QByteArrayView.
- qSwap() est maintenant constexpr.
- Ajout d'une nouvelle API CMake publique :
- pour configurer les valeurs par défaut du projet : qt_standard_project_setup()
- pour déployer des applications : qt_generate_deploy_app_script() (dans l'aperçu technologique)
- pour générer un fichier qt.conf au moment de l'installation : qt_deploy_qt_conf() (dans Technology Preview)
- pour déployer les dépendances d'exécution au moment de l'installation : qt_deploy_runtime_dependencies() (in Technology Preview)
- pour effectuer des tâches spécifiques à la plate-forme associées à un projet Qt : qt_finalize_project() (dans l'aperçu technologique)
Qt GUI Module
- L'appel à QGuiApplication::setLayoutDirection() avec une valeur non-auto désactive désormais l'auto-détection basée sur les traducteurs installés.
- Les gestionnaires d'URL passés à QDesktopServices::setUrlHandler() doivent maintenant être supprimés en appelant unsetUrlHandler() avant d'être détruits. S'appuyer sur le destructeur du gestionnaire pour les désactiver implicitement est déprécié.
- QVulkanWindow active désormais toutes les fonctionnalités de Vulkan 1.0 qui sont signalées comme étant prises en charge par le périphérique physique.
Qt Quick Module
- Nouvel élément ajouté : TreeView.
- Tous les gestionnaires de pointeurs ont des propriétés
parentréglables. - HoverHandler et WheelHandler ont une propriété
blockingpour contrôler si les événements hover et wheel respectivement se propagent aux éléments et aux gestionnaires derrière l'élémentparentdu gestionnaire. - TapHandler a maintenant une valeur gesturePolicy supplémentaire :
DragWithinBounds; elle est similaire àWithinBounds, sauf que même si l'utilisateur glisse tout en maintenant le point enfoncé, timeHeld n'est pas réinitialisé pendant le glissement, et le signal longPressed est émis quel que soit le seuil de glissement, si l'utilisateur le maintient aussi longtemps que possible. Ceci est utile pour implémenter des composants "presser-glisser-relâcher" tels que des menus (comme le menu circulaire dans l'exemple des gestionnaires de pointeurs) tout en utilisanttimeHeldpour piloter directement une animation "d'ouverture". - QQuickItem::clipRect() fournit maintenant la région visible dans viewport (le parent Flickable ou Window), et peut être utilisé pour limiter les sommets des nœuds du graphe de scène comme une optimisation dans les éléments personnalisés, au prix d'avoir updatePaintNode() appelé plus souvent. Voir la documentation sur les nouveaux drapeaux QQuickItem::ItemObservesViewport et QQuickItem::ItemIsViewport.
- Pour économiser de la mémoire et du temps de démarrage, Text et TextEdit évitent désormais de générer des nœuds de graphe de scène pour les grandes portions de texte qui sont invisibles parce qu'elles se trouvent en dehors de la fenêtre de visualisation (Flickable ou Window).
- Text rend désormais les règles horizontales à partir de HTML ou de Markdown.
- Dans Text, les règles horizontales et les lignes soulignées, surlignées ou barrées peuvent être colorées par des règles CSS incluses dans la 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é ; il peut être appelé à partir de C++ (similaire à QObject::dumpObjectTree()) ou de QML, pour afficher la sortie de l'opérateur qDebug pour un élément et tous ses enfants, indentés pour montrer la structure de l'arbre.
- TapHandler tapped Les signaux singleTapped et doubleTapped ont maintenant deux arguments : l'instance QEventPoint et le
buttonqui est sollicité. Si vous avez besoin d'un gestionnaire de signaux, vous devez écrire une fonction explicite pour recevoir ces arguments :onTapped: function(point, button) { ... } onDoubleTapped: (point, button)=> ... - DragHandler activeTranslation now contient la quantité de mouvement depuis le début du geste de glissement. persistentTranslation contient la somme accumulée du mouvement qui s'est produit au cours des gestes de glissement ultérieurs, et peut être réinitialisé à des valeurs arbitraires entre les gestes.
Qt Quick Module de contrôle
- De nouveaux contrôles ont été ajoutés : TreeViewDelegate, Calendar, CalendarModel, DayOfWeekRow, MonthGrid, WeekNumberColumn.
Qt Quick Module Dialogues
- Ajout de FolderDialog et MessageDialog. Il s'agit de boîtes de dialogue natives sur les plates-formes qui les prennent en charge et de boîtes de dialogue non natives Qt Quick sur les autres plates-formes.
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 roue cinétique ou d'un track pad.
Plusieurs nouvelles valeurs de l'énumération QStyle sont disponibles pour permettre aux styles de personnaliser d'autres aspects de l'aspect et de la convivialité d'une interface utilisateur basée sur des widgets :
- PM_LineEditIconMargin pour personnaliser la marge autour d'une icône dans une page QLineEdit.
- SH_Table_AlwaysDrawLeftTopGridLines pour contrôler si les lignes gauche et supérieure de la grille sont toujours peintes, même lorsque les en-têtes sont cachés.
- SH_SpinBox_SelectOnStep pour contrôler si la modification de la valeur à l'aide des boutons haut/bas doit sélectionner le texte.
- SP_TabCloseButton de spécifier une icône pour le bouton de fermeture dans l'onglet d'un QTabBar
Qt Network module
- QNetworkInformation learned transportMedium. Une propriété qui renvoie le support de transport de l'interface réseau primaire.
- QNetworkInformation également appris isMetered. Une propriété qui indique si le réseau est équipé de compteurs.
Module Qt QML
- Ajout d'un compilateur de type QML (
qmltc) qui compile la structure de type QML en C++. - Ajout de plusieurs nouveaux avertissements à qmllint qui utilise maintenant l'infrastructure du compilateur.
- Le module d'en-tête qmlintegration permet de marquer des types pour les enregistrer dans un module QML, sans ajouter de dépendance à qtdeclarative. Ceux-ci peuvent alors être ajoutés à un module QML via la nouvelle API CMake qt_generate_foreign_qml_types().
- qmlcachegen compile maintenant les fonctions et expressions appropriées en C++, pour améliorer les performances.
- Ajout de la prise en charge des propriétés de groupe généralisées dans Binding et PropertyChanges, permettant à la syntaxe des propriétés de groupe (par exemple,
someId.someProperty) d'être utilisée dans ces contextes. - Introduction de la version de base de 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 étrangers d'une cible dans un module QML : qt_generate_foreign_qml_types( ) (en avant-première technologique)
- pour compiler le code QML en C++ : qt_target_compile_qml_to_cpp( ) (in Technology Preview)
- pour déployer des applications QML : qt_generate_deploy_qml_app_script() (in Technology Preview)
- pour déployer les composants d'exécution des modules QML au moment de l'installation : qt_deploy_qml_imports() (in Technology Preview)
- pour demander des informations sur un module QML : qt_query_qml_module() (dans l'aperçu technologique)
Qt Quick Module 3D
- Ajout de ReflectionProbe, permettant aux modèles d'afficher des réflexions.
- Particles3D : Nouvel élément
ParticleCustomShape3Dqui charge des formes émettrices à partir de fichiers binaires CBOR personnalisés. - Particles3D : Les particules des sprites sont maintenant compatibles avec les lumières de l'environnement 3D.
- Particles3D : Nouvel élément
DynamicBurstpour l'émission dynamique déclarative et pour l'émission aux heures de début et de fin de la traînée. - Ajout d'un composant ResourceLoader pour la définition explicite des durées de vie des ressources (dans l'aperçu 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
- Construit maintenant avec Python 3 au lieu de Python 2
- Ajout d'une API pour remplacer le menu de sélection tactile QML
- Ajout d'une nouvelle API CMake publique :
- pour convertir les dictionnaires Hunspell au format binaire Qt WebEngine
.bdic: qt_add_webengine_dictionary()
- pour convertir les dictionnaires Hunspell au format binaire Qt WebEngine
Qt Data Visualization Module
- Ajout d'une nouvelle propriété wireframeColor pour définir la couleur de l'image filaire pour un QSurface3DSeries dans Q3DSurface.
- Ajout d'une nouvelle propriété rowColors pour définir des couleurs différentes pour les rangées de barres dans Q3DBars.
- Ajout d'une nouvelle propriété barSeriesMargin pour définir la marge des barres individuelles dans Q3DBars.
- Ajout d'une fonction hasSeries pour vérifier si une série est déjà ajoutée dans QAbstract3DGraph.
- Ajout de la 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 rapporte 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 est toujours manquante.
- Extension de l'API QBluetoothDeviceInfo pour exposer les données du service Bluetooth Low Energy telles qu'elles sont publiées pendant l'annonce.
Qt Wayland Compositor Module
- Ajout d'une API pour créer des extensions shell personnalisées. Pour les instructions d'utilisation, voir l 'exemple.
- Ajout d'un Qt Shell qui prend en charge toutes les fonctionnalités du système de fenêtrage disponibles dans Qt.
- Ajout de la prise en charge du protocole presentation-time.
- Ajout de la prise en charge de plusieurs protocoles de méthodes d'entrée dans le même serveur, afin de prendre en charge des clients provenant de sources différentes.
Modifications de la plate-forme
Plateformes d'aperçu technologique
WebAssembly
Plusieurs améliorations ont été apportées à Qt pour WebAssembly. Voir la documentation de la plate-forme à Qt for WebAssembly pour plus de détails.
- Ajout du support pour le copier/coller d'images et de texte html dans le presse-papier du système.
- Ajout du support SIMD. Notez que l'activation de SIMD nécessite la construction de Qt à partir des sources.
- Ajout de la prise en charge de l'appel de QEventLoop::exec() et QThread::exec() sur des threads secondaires.
- Ajout du support pour appeler QEventLoop::exec() et QDialog::exec() sur le thread principal en utilisant Emscripten Asyncify. Notez que l'activation d'asyncify nécessite la construction de Qt à partir des sources.
- Le glisser-déposer fonctionne maintenant pour les constructions activées par asyncify.
- Ajout de la prise en charge du tunnelage des sockets TCP et UDP sur les WebSockets, en utilisant Emscriptens Emulated POSIX TCP Sockets over WebSockets. Ce support est limité aux sockets asynchrones sur le thread principal.
Windows sur ARM
Windows sur ARM64 reste en avant-première technologique car les problèmes avec les versions optimisées de Qt n'ont pas encore pu être résolus.
Plates-formes mobiles
Android
- La démo In-App purchasing et Qt 3D: Planets QML Example ont bénéficié d'améliorations spécifiques à Android.
- Mise à jour de Gradle vers la version 7.2.0 et de l'Android Gradle Plugin (AGP) vers la version 7.0.2 (nécessite le JDK 11 ou plus).
- Ajout de la cible _make_aab manquante pour les projets CMake Android.
- Ajout de la construction multi-ABI pour CMake, voir QT_ANDROID_ABIS.
- Les modules QML sont maintenant stockés dans un répertoire commun nommé "android-qml" sous le dossier de construction de l'utilisateur. Cela sert de chemin d'importation commun pour l'outil androiddeployqt.
- Le banc d'essai QML fonctionne désormais pour les constructions Android.
iOS
- Les projets basés sur CMake génèrent désormais un écran de lancement par défaut.
Plateformes embarquées
Boot to Qt
- Boot to Qt a été mis à jour pour utiliser Yocto 3.4 (honister).
- Qt PDF et Qt Language Server ont été inclus dans la pile Boot to Qt.
Autres
Wayland
- Implémentation du support du protocole
DataDeviceV3. - Mise à jour du support de
wl_seatvers la version 7. - Ajout d'un support pour la sélection du protocole de la méthode d'entrée, si le serveur supporte plusieurs interfaces. Ceci peut être fait en définissant QT_WAYLAND_TEXT_INPUT_PROTOCOL avec le nom du protocole.
Liste des modifications de l'API
Ces pages contiennent une vue d'ensemble des changements de l'API dans Qt 6.3 :
Ajouts à toutes les versions de Qt 6
Liste des nouvelles fonctionnalités de Qt 6.0. | |
Liste des 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. |
© 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.