Nouveautés de Qt 6.8
Modules nouveaux et restaurés dans Qt 6.8
Qt 6.8 ajoute les modules et outils suivants :
- L'outil svgtoqml, utilisé pour générer du code QML à partir de documents SVG, est maintenant sorti de l'aperçu technique. L'outil supporte un sous-ensemble statique du profil
SVG Tiny 1.2. - L'outil Qt Graphs, Qt HTTP Server, Qt Protobuf, et Qt GRPC sont tous promus hors de l'état de prévisualisation technique.
- Ajout du module Qt Quick Vector Image pour afficher des documents SVG en tant que graphiques vectoriels évolutifs dans une scène Qt Quick.
Modules supprimés dans Qt 6.8
Le module suivant est obsolète. Il est fortement déconseillé de l'utiliser dans un nouveau code.
Qt 3D Module
Le module Qt 3D est obsolète. Qt 3D fait toujours partie du logiciel sous licence et du projet Qt. Le module continue d'être intégré à d'autres modules pour les prochaines versions. Les bogues critiques et les failles de sécurité seront traités par les responsables du module au KDAB. En ce qui concerne les nouvelles caractéristiques et fonctionnalités, les utilisateurs doivent contacter le KDAB en envoyant un courriel à info@kdab.com.
Nouvelles fonctionnalités de Qt 6.8
Qt Core Le module
- QChronoTimer est un remplacement pour QTimer qui utilise les durées std::chrono partout.
- QTimer::id() renvoie un Qt::TimerId, introduit et accepté à la place des int timer IDs dans les nouvelles surcharges de diverses méthodes qui en prennent un.
- Plus de support pour les durées std::chrono pour remplacer les paramètres nanosecondes intégraux dans QAbstractEventDispatcher.
- QString, QByteArray, et QList gain resizeForOverwrite().
- QString QByteArray gain slice() équivalent à .
*this = sliced() - QString, QByteArray, QList, QVarLengthArray gain max_size() pour la compatibilité avec la Standard Template Library (STL).
- QList prend en charge la construction avec des entrées non initialisées jusqu'à une taille spécifiée, lorsque le type de contenu le permet.
- QVarLengthArray::PreallocatedSize indique le paramètre Prealloc.
- QLatin1StringMatcher::indexIn() peut maintenant prendre un QStringView.
- QCollatorSortKey prend désormais en charge la construction de mouvements.
- QStringEncoder et QStringDecoder peuvent maintenant prendre le nom de l'encodage en tant que QString.
- QThread gains isMainThread(), isCurrentThread().
- QThreadPool::waitForDone() accepte maintenant un QDeadlineTimer à la place de int millisecondes.
- QDirListing fournit une itération de style stl sur les entrées du répertoire.
- QVersionNumber peut maintenant être construit à partir d'un QSpan; il peut aussi être itéré.
- qHash() accepte maintenant quint128 et qint128.
- QMap::qHash() vous indique la valeur de hachage d'une clé.
- QHash peut maintenant hacher différents types à partir de sa clé, s'ils sont marqués comme ayant un résultat de hachage équivalent pour des valeurs équivalentes (C++20 uniquement). Cela fonctionne pour les paires QString/QStringView et QByteArray/QByteArrayView. Sur tous les systèmes, à l'exception des processeurs ARM, QLatin1StringView participe également au hachage de QString et QStringView.
- QPointFLes pages Web de QT_ENABLE_NET, QLineF, QRectF et QMarginsF supportent maintenant les comparaisons floues et les vérifications de nullité.
- Définissez QT_ENABLE_STRICT_MODE_UP_TO pour ne pas utiliser certaines API, documentées par la version à laquelle elles sont supprimées.
- Définissez QT_NO_QASCONST pour désactiver qAsConst().
- Définissez QT_(NO_)USE_NODISCARD_FILE_OPEN pour contrôler
[[nodiscard]]sur les méthodesopen()des classes d'E/S. - QLibraryInfo::paths() renvoie tous les chemins pertinents.
- QCryptographicHash et QMessageAuthenticationCode gagnent hashInto() pour calculer le hachage des données dans un tampon fourni.
- Plus de types QtCore avec
operator<()supportent maintenant aussioperator<=>()lorsqu'ils sont compilés avec C++20 (etcompareThreeWay()même pour C++17). Ces types supportent maintenant de manière cohérente les six opérateurs relationnels (en tant qu'amis cachés) et l'inverse de chaque comparaison de type mixte qu'ils supportaient. Dans Qt 6.8, cela s'applique à :- qfloat16
- QAnyStringView
- QByteArray
- QByteArrayView
- QCborArray
- QCborMap
- QCborValue
- QChar
- QDate
- QDateTime
- QDeadlineTimer
- QElapsedTimer
- QLatin1Char
- QLatin1StringView
- QModelIndex
- QOperatingSystemVersion
- QPersistentModelIndex
- QString
- QStringView
- QTime
- QTypeRevision
- QUrl
- QUtf8StringView
- QUuid
- QVersionNumber
- L'espace de noms QtJniTypes, avec des macros pour déclarer des types Java avec leur signature JNI, est promu hors de l'aperçu technologique et documenté.
- Les versions de modèles variables des API QJniObject et QJniEnvironment ne sont plus préliminaires et sont entièrement documentées.
- La nouvelle classe modèle QJniArray permet de travailler facilement avec des tableaux Java à partir d'un code C++.
Qt Graphs Le module
- Qt Graphs est promu hors de la prévisualisation technique.
- Le module est divisé en deux sous-modules, Qt Graphs et Qt Graphs Widgets, afin de supprimer la nécessité d'inclure des widgets dans les applications purement QML.
- Thématisation unifiée pour les graphiques 2D et 3D. Voir GraphsTheme.
- Voir les guides de migration de Qt Charts et de Qt DataVisualization.
Qt Graphs3D
- Ajout de la prise en charge de la transparence pour Bars3D et Scatter3D.
- Ajout de la prise en charge de Scene3D.primarySubViewport et Scene3D.secondarySubViewport.
- Ajout de la prise en charge du décalage de la position des titres des graphiques. Voir Abstract3DAxis.titleOffset.
- Ajout de la prise en charge des marges des étiquettes. Voir GraphsItem3D.labelMargin.
- Ajout de la prise en charge du rendu de la grille avec un shader et de la modification de la largeur de la ligne de grille. Voir GraphsItem3D.gridLineType et graphsline.mainWidth.
Qt Graphs2D
- Ajout de la prise en charge de AreaSeries.
- Ajout de la prise en charge des barres personnalisées à l'aide de composants QML. Voir BarSeries.barDelegate.
- Ajout de la prise en charge des barres Stacked et StackedPercent. Voir BarSeries.barsType.
- Ajout de la prise en charge des étiquettes de graphiques à barres. Voir BarSeries.labelsVisible.
- Ajout de la prise en charge des mappeurs de modèles pour différentes séries. Voir XYModelMapper, BarModelMapper et PieModelMapper.
- Ajout de la prise en charge des LegendData pour toutes les séries.
- Ajout de la prise en charge des splineseries dynamiques.
- Ajout de la prise en charge des titres d'axes. Voir AbstractAxis.titleText.
Qt GRPC Le module
- Qt GRPC est promu hors de la prévisualisation technique.
- Ajout de la prise en charge du streaming au module GrpcQuick.
- Suppression de QGrpcInterceptor, QGrpcInterceptorManager et QGrpcInterceptorContinuation.
- Ajout de la méthode
writesDone()à QGrpcClientStream et QGrpcBidirStream pour fermer à moitié un flux du côté client.
Qt GUI Le module
- QStyleHints::colorScheme dispose désormais d'une fonction setter qui permet aux applications d'essayer de remplacer les paramètres du système par un schéma explicite Dark ou Light.
- Ajout de QFont::ContextFontMerging, qui peut être utilisé pour activer un nouvel algorithme de fusion des polices qui prend en compte la chaîne complète lors de la sélection des polices de remplacement. Cela peut coûter un peu plus cher, mais dans certains cas, cela donnera de meilleurs résultats.
- Ajout de la stratégie de style QFont::PreferTypoLineMetrics, qui peut être définie pour toujours préférer la métrique de ligne typographique dans les polices OpenType, même si la police ne définit pas manuellement le drapeau USE_TYPO_METRICS.
- Ajout du support de QDesktopServices custom et https URL scheme pour macOS, similaire à ce que iOS a.
- QImage::Format_CMYK8888 Le format d'image CMYK 32bit a été ajouté.
- QColorSpace La prise en charge du traitement des espaces colorimétriques ICC A2B a été ajoutée, ainsi que la prise en charge explicite des espaces colorimétriques en niveaux de gris et CMJN.
- La prise en charge des espaces colorimétriques HDR QColorSpace::Bt2020, QColorSpace::Bt2100Pq, et QColorSpace::Bt2100Hlg a été ajoutée.
- QColorSpace::transformModel() renvoie le modèle de traitement sous-jacent.
- QColorSpace::colorModel() renvoie le modèle de couleur pour lequel l'espace colorimétrique est conçu.
- QImage::colorTransformedLes variantes () et QImage::applyColorTransform() avec trois arguments ont été ajoutées pour prendre en charge la conversion du format d'image et de l'espace colorimétrique en même temps.
- QStyleHints::contextMenuTrigger () est une propriété inscriptible qui permet aux applications de contrôler si les menus contextuels doivent être ouverts en appuyant ou en relâchant un bouton.
- Les interfaces d'accessibilité de Qt XML peuvent désormais prendre en charge le rapport de attributes en tant que paires clé/valeur aux clients.
- QAccessibleAnnouncementEvent Ce message peut être levé par des applications pour demander l'annonce d'un message par des technologies d'assistance.
- QPageLayout::setMargins peut maintenant prendre un paramètre optionnel OutOfBoundsPolicy pour indiquer si les marges qui sont hors limites doivent être rejetées ou bloquées.
- QPdfWriter Prise en charge de la couleur CMJN pour les stylos/plumes.
- QFontDatabase addApplicationFallbackFontFamily permet de spécifier les familles de polices de remplacement par défaut pour des scripts spécifiques.
- Achèvement de la prise en charge du rendu multiview dans QRhi. Multiview est maintenant pris en charge avec les implémentations Vulkan 1.1, au lieu de nécessiter Vulkan 1.2. Ceci est particulièrement pertinent pour les appareils basés sur Android tels que le Meta Quest 3.
- Introduction du support QRhi pour la résolution automatique du rendu de profondeur multi-échantillon (profondeur/crayon) dans une texture de profondeur non multi-échantillon (profondeur/crayon), sur les plateformes et les API où cela peut être supporté. Voir QRhiTextureRenderTargetDescription::setDepthResolveTexture() et QRhi::ResolveDepthStencil pour plus de détails.
Qt Multimedia Module
- Ajout des classes QVideoFrameInput et QAudioBufferInput, qui peuvent envoyer des données multimédia personnalisées à QMediaRecorder via QMediaCaptureSession.
- Ajout de la classe QAudioBufferOutput, qui peut recevoir des données audio décodées de QMediaPlayer.
- Ajout de la classe QAbstractVideoBuffer, qui permet de créer des instances QVideoFrame avec des données vidéo personnalisées.
- QMediaRecorder La classe QIODevice peut écrire la sortie média sur .
- Ajout de la prise en charge de QScreenCapture sur Linux à l'aide du compositeur Wayland, qui prend en charge le service ScreenCast via le portail XDG Desktop.
- La bibliothèque FFmpeg est liée dynamiquement au plugin FFmpeg, et les modules FFmpeg partagés utilisés sont livrés avec Qt Multimedia.
- Ajout du support pour le backend média FFmpeg sur iOS.
- Augmentation de la version minimale requise de GStreamer à 1.20.
Qt Network Module
- QNetworkAccessManager Prise en charge de l'envoi de requêtes HTTP sur un socket local en utilisant le schéma unix+http : ou local+http :.
- QDnsLookup supporte maintenant l'envoi de DNS sur TLS et peut informer si le serveur DNS a effectué une vérification de l'authenticité des données.
- QDnsLookup Prise en charge accrue des enregistrements d'association TLS.
- QNetworkCacheMetaDataLes en-têtes des serveurs DNS, QNetworkProxy, QNetworkRequest et QNetworkReply peuvent désormais être obtenus et définis.
- QNetworkRequestFactory permet de définir les adresses priority et attributes pour les demandes futures.
- Ajout des classes QFormDataPartBuilder et QFormDataBuilder pour faciliter la création de messages QHttpMultipart.
Qt Network Module Auth
- Ajout de la classe QOAuthUriSchemeReplyHandler, qui gère les redirections d'URI privées/personnalisées et https (plates-formes prises en charge : iOS, Android et macOS).
- Ajout de la prise en charge de la preuve d'échange de code clé (PKCE) à la classe QOAuth2AuthorizationCodeFlow. PKCE est une mesure de sécurité recommandée pour atténuer les attaques d'interception de code d'autorisation.
- Suite aux commentaires de plusieurs utilisateurs, nous sommes revenus en arrière et avons abordé de nombreux problèmes dans le but d'améliorer qnetworkauth de manière générale. Cela inclut plusieurs corrections de bogues, des améliorations, des dépréciations, des ajouts à la documentation, ainsi qu'une documentation générale pour aider à la prise en main.
Qt Positioning Module
- Le backend Android Qt Positioning peut maintenant fournir l'altitude au format MSL sur Android 14 et plus.
Qt Protobuf Module
- Le module Qt Protobuf est promu hors de l'aperçu technique.
Qt Qml Module
- Ajout de nouvelles fonctionnalités à QML Language Server: surlignage sémantique, plus de support pour les langages JavaScript, support des snippets pour les types Quick, aide à la documentation, renommage des fichiers QML, support de la configuration des avertissements
.qmllint.ini. - Ajout de
pragma ValueTypeBehavior: Assertable. Ceci permet une vérification correcte des types avec les castings as sur les types de valeurs. Sans ce pragma, l'utilisation de as avec un type de valeur crée une instance de ce type au lieu de simplement vérifier le type. Le nouvel attribut garantit que les casts as fonctionnent correctement pour les assertions de type. - Amélioration de la gestion des types de valeurs. qmllint avertit désormais lors de la construction de types de valeurs bien connus (tels que
point,rect,size) à partir de chaînes de caractères, encourageant ainsi l'utilisation de constructeurs appropriés. Les types de valeur peuvent maintenant avoir des constructeurs par défaut et sont mieux intégrés au système de types. - Introduction du ramassage incrémental des ordures pour améliorer la réactivité des applications. Le ramasse-miettes effectue désormais son travail de manière incrémentale sur plusieurs images au lieu de bloquer l'exécution pendant de longues périodes. Cela permet de réduire considérablement les temps de pause et d'améliorer les performances, en particulier pour les applications complexes. Le GC incrémental comprend
- une phase de marquage incrémental pour éviter les longues pauses
- Une phase de balayage incrémental pour la récupération de la mémoire
- Limites de temps configurables via des variables d'environnement
- QJSEngine::collectGarbageLe comportement de () est désormais aligné sur la méthode
gc()de QML pour des raisons de cohérence. - Les types de valeurs constructibles peuvent désormais être créés directement en QML à l'aide de la syntaxe des constructeurs, ce qui permet une initialisation plus propre des types de valeurs tels que
color,rect, et des types définis par l'utilisateur. - Deux nouvelles politiques CMake affectant le comportement de qt_add_qml_module ont été ajoutées : QTP0004 facilite l'utilisation des modules QML lorsque des structures de dossiers imbriqués sont utilisées. QTP0005 permet l'utilisation de cibles lors de la spécification d'importations et de dépendances.
Qt Quick Compilateur
- Le compilateur de scripts Qml enregistre désormais des statistiques sur la compilation Qml vers Cpp. Ces informations peuvent être affichées en exécutant la cible all_aotstats sur le projet.
Qt Quick Module
- Ajout de font.contextFontMerging, qui peut être utilisé pour activer un nouvel algorithme de fusion des polices qui prend en compte le texte complet lors de la sélection des polices de repli. Cela peut coûter un peu plus cher, mais dans certains cas, cela donnera de meilleurs résultats.
- Ajout de la propriété font.preferTypoLineMetrics, qui peut être définie pour toujours préférer la métrique de ligne typographique dans les polices OpenType, même si la police ne définit pas manuellement le drapeau USE_TYPO_METRICS.
- Ajout de la propriété retainWhileLoading à Image et BorderImage. Lorsqu'elle vaut
truepour les images qui se chargent de manière asynchrone, les données de l'image actuelle sont conservées jusqu'à ce que la nouvelle image soit entièrement chargée. Cela permet d'éviter le scintillement. - Ajout de PlanarTransform, un objet utilitaire fournissant des fonctions simples pour spécifier des matrices de transformation 2D.
- Ajouté PathRectangle, un chemin de rectangle arrondi optionnel pour Shape et PathView.
- Ajout de la propriété Drag.imageSourceSize pour contrôler la taille de l'image représentant les données glissées.
- Ajout de QQuickRenderTarget::depthTexture pour définir une texture de profondeur personnalisée.
- Ajout de l'énumérateur QQuickRenderTarget::Flag pour permettre de spécifier un format de vue lors de la construction via les constructeurs nommés.
- TableView L'interface de l'interface utilisateur permet désormais de déplacer columns et rows de manière programmatique et interactive.
- Tous les objets et matériaux standard de Qt Quick sont compatibles avec le rendu multivue. Celui-ci est utilisé de manière transparente pour les applications lorsqu'un contenu 2D est intégré dans une scène Qt Quick 3D XR et que le rendu multi-vues est activé. Le rendu multi-vues peut améliorer les performances de rendu et réduire la consommation d'énergie des dispositifs AR/VR.
- La création de matériaux personnalisés compatibles avec le multiview (QSGMaterial, QSGMaterialShader) est rendue possible par QSGMaterial::viewCount().
- Ajout d'un support pour diriger le rendu Qt Quick dans un tableau de textures 2D avec Multiview Rendering dans QQuickRenderTarget. Ceci est réalisé via de nouvelles surcharges de fonctions telles que QQuickRenderTarget::fromVulkanImage(), et constitue la base de la prise en charge du rendu multi-vues pour les applications XR construites avec Qt Quick 3D.
- Ajout de la prise en charge de l'exécution automatique de multisample resolve à la fin d'une passe de rendu dans QQuickRenderTarget. Auparavant, le rendu multi-échantillon des scènes Qt Quick redirigées n'était possible qu'en ciblant les textures multi-échantillon, laissant la résolution à l'application ou à ses shaders. Lorsque cette option est activée, Qt Quick crée désormais automatiquement des textures multi-échantillons intermédiaires à utiliser comme tampon de couleur, en effectuant automatiquement la résolution dans la texture non multi-échantillon fournie par l'application. Cela permet de rendre Qt Quick en ciblant les textures fournies par un moteur externe, une structure ou une API (par exemple, OpenXR) qui ne fournit et ne consomme que des textures sans multi-échantillon.
- Ajout de la prise en charge de setting a depth texture dans QQuickRenderTarget. Cela permet de spécifier la propre texture de l'application (ou le tableau de textures, lors de l'utilisation du rendu multivue) où les données de profondeur sont écrites, au lieu d'utiliser les propres tampons intermédiaires de Qt. Utile en particulier lorsque les données de profondeur doivent être écrites dans une texture de profondeur fournie par un moteur externe, une structure ou une API (par exemple, OpenXR).
- Ajout de la prise en charge de la spécification d'un format de vue de texture dans QQuickRenderTarget. Il est spécifié via l'argument
viewFormatdans les nouvelles surcharges pour QQuickRenderTarget::fromVulkanImage() et similaires. Cette fonctionnalité est fournie spécifiquement pour permettre de supprimer ou d'ajouter le qualificatif sRGB au format de texture, et est utile lorsqu'il faut travailler avec des textures fournies par un moteur externe, un framework ou un compositeur XR, lorsque le contrôle sur le format de texture n'est pas disponible, mais que la conversion implicite linéaire->sRGB des API 3D lors de l'écriture des shaders n'est pas acceptable (par exemple, parce que le pipeline de matériaux 3D de Qt Quick effectue déjà la même opération). - QQuickRenderTargetLa gestion interne des tampons intermédiaires pour les données de profondeur/stencil et de couleur multi-échantillon a été repensée. L'appel à QQuickWindow::setRenderTarget() n'invalide plus tous les tampons temporaires internes, mais tente plutôt de les réutiliser tant que la taille, le format et les autres paramètres correspondent. Cela devrait permettre d'améliorer les performances des applications et des bibliothèques qui doivent transmettre une texture native différente à QQuickWindow à chaque image (par exemple, parce que la texture provient d'un pool de tampons géré par un moteur externe, un cadre de travail ou un compositeur XR).
Qt Quick Module Contrôles
- Ajout du style FluentWinUI3, un style natif moderne conçu pour les plates-formes fonctionnant sous Windows 11 et plus.
- Ajout d'une nouvelle propriété popupType à Popup, et aux types dérivés. Elle peut être utilisée pour contrôler si la fenêtre contextuelle doit être dans la scène ou si elle doit apparaître dans sa propre fenêtre contextuelle de niveau supérieur.
- Le style macOS est maintenant capable de créer les types natifs menus et menubars.
- Les types du module (interne) QtQuick.Controls.impl, tels que PaddedRectangle ou MnemonicLabel ou similaires, ne sont plus exposés accidentellement à tout document qui importe QtQuick.Controls ou tout style de contrôle. Ces types sont des API privées et n'ont jamais été censés être accessibles sans importer explicitement QtQuick.Controls.impl.
Qt Quick Module Shapes
- Ajout de la propriété ShapePath.fillItem. Elle peut être utilisée pour prendre n'importe quel élément fournisseur de texture (comme les éléments en couches et les images) et l'utiliser comme remplissage pour la forme.
- Ajout de la propriété ShapePath.fillTransform, qui peut être utilisée pour définir une transformation arbitraire sur le remplissage de la forme, qu'il s'agisse d'un élément ou d'un dégradé.
Qt Quick Module 3D
- Aperçu technologique de la prise en charge par XR de Qt Quick 3D
- Prise en charge des écrans montés sur la tête (HMD) utilisant OpenXR, tels que Meta Quest 2 et 3.
- Prise en charge d'Apple Vision Pro.
- Rendu multi-vues (rendu des deux yeux en un seul passage).
- Prise en charge des entrées spatiales via le suivi des mains ou des contrôleurs.
- Prise en charge des ancres spatiales.
- Amélioration du rendu des ombres
- Amélioration de la qualité générale.
- Outils de débogage des ombres améliorés.
- Cartes d'ombres en cascade.
- Ombres douces par filtrage en pourcentage (PCF).
- PrincipledMaterial Améliorations
- Paramètres supplémentaires pour l'ajustement de Fresnel.
- Prise en charge du masquage des propriétés basé sur l'attribut de couleur des vertex.
- CustomMaterialModule VectorImage : expose les propriétés restantes à partir de PrincipledMaterial.
Qt Quick Module VectorImage
- Introduction du module VectorImage: un composant qui peut être utilisé pour rendre des graphiques vectoriels directement sur Qt Quick avec l'accélération matérielle et sans pré-rastérisation. Il prend actuellement en charge le format SVG (un sous-ensemble statique du profil
SVG Tiny 1.2).
Module Qt Shader Tools
- Fin de la prise en charge des shaders compatibles avec le rendu multivue. Ajout du mot-clé
MULTIVIEWà l'intégration du système de construction Qt Shader Tools . - Ajout du support depfile pour les shaders traités au moment de la construction via qt_add_shaders(). Toucher un fichier inclus via la directive
#includedans un shader déclenchera désormais une recompilation de ce fichier de shader lors de la prochaine construction du projet.
Qt SQL Module
- QSqlDatabaseLe module Qt Sql a été remplacé par les fonctions suivantes : QSqlQuery, et QSqlDriver a gagné numericalPrecisionPolicy.
- QSqlDatabase a obtenu une nouvelle fonction moveToThread() pour changer l'affinité des threads de la connexion à la base de données.
- Les pilotes PostgreSQL et MySQL/MariaDB gèrent désormais correctement les dates et heures lorsque le serveur se trouve dans un fuseau horaire différent de celui du client.
- Toute la journalisation est maintenant effectuée à travers des loggers catégorisés, qt.sql, afin d'améliorer le débogage.
- QSqlField::defaultValueLes propriétés, value, readOnly, requiredStatus, length, precision, generated, autoValue, et tableName sont maintenant des propriétés.
- QSqlIndex::name et cursorName, QSqlQuery::forwardOnly, et positionalBindingEnabled sont désormais des propriétés.
Qt Test Module
- Ajout de QTEST_THROW_ON_FAIL et QTEST_THROW_ON_SKIP, macros C++ et variables d'environnement qui, lorsqu'elles sont définies, modifient la façon dont QCOMPARE()/QVERIFY()/QSKIP() etc. sortent de la fonction de test en cas d'échec. Au lieu d'un retour, ne sortant que de la fonction immédiatement environnante, elles lancent une exception spéciale, sortant ainsi des sous-fonctions de la fonction de test, jusqu'à QtTestLib.
- Les macros QTRY_*_WITH_TIMEOUT acceptent maintenant aussi les littéraux chrono (anciennement :
intmillisecondes). - QTest::failOnWarning() a maintenant une surcharge sans paramètre pour supporter le cas commun de fail-on-any-warning, sans avoir besoin de construire une expression régulière match-everything.
- QSignalSpy n'hérite plus de QObject. Si votre code utilise le fait que QSignalSpy est un QObject, vous devez maintenant revoir votre conception.
- La méthode QSignalSpy::signal() ne renvoie plus nécessairement un tableau d'octets vide en cas d'échec de la connexion. Utilisez la méthode isValid() existante pour déterminer si un objet QSignalSpy donné écoute un signal valide sur un objet valide.
- Les macros QCOMPARE_xx ne peuvent désormais trouver que les expansions QTest::toString() qui sont soit trouvées via la recherche dépendante de l'argument sur le type en question, soit qui sont une instanciation du modèle QTest::toString<T>(). Cela correspond au comportement de la macro QCOMPARE().
Qt WebEngine Module
- QWebEngineFrame ajouté pour l'API spécifique au cadre, comme l'exécution de javascript sur des cadres spécifiques, ou l'impression de cadres spécifiques.
- QWebEngineClientHints Ajout d'un module pour mieux contrôler l'identification du navigateur aux pages web en utilisant l'api DOM des indices du client.
- QWebEnginePermission Ajout d'un module pour gérer les permissions des sites web nouveaux et existants. L'API de permissions existante dans QWebEnginePage est obsolète et remplacée par QWebEngineProfile::getPermission() et QWebEngineProfile::listPermissions().
- Ajout de QWebEngineProfile::setPersistentPermissionsPolicy() pour contrôler la façon dont les permissions du site web persistent à travers les sessions de navigation. Par défaut, les permissions entrantes sont sauvegardées sur le disque.
- Ajout des types de permissions QWebEnginePermission::ClipboardReadWrite et QWebEnginePermission::LocalFontsAccess.
- QWebEngineCertificateError::isMainFrame() indique que l'erreur de certificat provient d'un cadre principal ou secondaire.
- QWebEngineNavigationRequest::hasFormData() ajouté pour indiquer qu'une requête de navigation envoie des données de formulaire.
- QWebEngineSettings::imageAnimationPolicy() ajouté pour contrôler la politique d'animation des images.
Outils
Générateur de documentation QDoc
- Vous pouvez désormais utiliser la commande
\keywordpour créer un lien vers le titre d'une section, afin d'améliorer l'aide contextuelle. - QDoc ne crée plus de liens incorrects vers une documentation inexistante pour les fonctions d'accès aux propriétés non documentées.
- Le système de construction ne définit plus
QDOC2_COMPAT. - Lors de la génération de la sortie DocBook, QDoc n'échappe plus les caractères plusieurs fois.
- La commande
\instantiatesest obsolète. Utilisez la nouvelle commande\nativetypeà la place. L'ancienne commande est désormais déléguée à la nouvelle, et QDoc génère un avis concernant son obsolescence. - Vous pouvez spécifier
autocomme type de retour pour les fonctions afin de masquer le type complet dans la documentation générée. - Amélioration du formatage du tableau des conditions requises dans la documentation de l'API.
- QDoc génère moins de rapports en double dans sa sortie vers stdout.
- Les fichiers .qhp contiennent désormais (correctement) des entrées pour les éléments de groupe créés avec la commande
\ingrouplorsqu'il n'y a pas de documentation\groupassociée. - QDoc génère maintenant des titres pour les espaces de noms dans les fichiers .qhp, et pas seulement pour les classes et les types.
- QDoc analyse maintenant correctement les options de la ligne de commande
-DDEFINE=VALUE. - QDoc génère de nouveaux avertissements si :
- l'attribut indexTitle du sous-projet qhp n'est pas trouvé.
- Si la commande
\nativetypeest utilisée plusieurs fois pour la même classe C++. - Lors de la génération d'un fichier plusieurs fois par projet.
- Les fonctions précédemment sélectionnées comme surcharge qui ne sont pas explicitement marquées par la commande
\overloadet qui, en raison de changements dans le tri, sont sélectionnées comme signature primaire. Elles doivent être soit documentées dans leur intégralité, soit marquées avec la commande\overload.
- QDoc ne signale plus les paramètres non documentés dans les constructeurs surchargés, et certains avertissements de liens inutiles ont été supprimés.
- Les avertissements sur les liens indiquent désormais des emplacements raisonnables.
- QDoc nécessite maintenant Clang 17 ou une version plus récente.
- Le manuel QDoc a reçu plusieurs mises à jour.
- Vous pouvez marquer les marques avec la nouvelle commande
\tm. Si vous définissez la variable de configurationnavigation.trademarkspage, le symbole de la marque (tm) devient un lien vers cette page. - La commande
\deprecated commandaccepte désormais les versions futures. - Les arguments des macros QDoc acceptent désormais les commandes de formatage.
- La commande
\compareswithautorise désormais les arguments entre accolades. - L'option de ligne de commande
-outputdirest désormais relative au répertoire de travail actuel. De plus, la variable de configurationnosubdirsne mélange plus ce qui se trouve dansoutputdir. - La variable de configuration
clangdefines, inutilisée et non documentée, a été supprimée. - QDoc ne génère plus de fichiers
.qhp.sha1. - QDoc génère désormais des références uniques aux entrées de la table des matières.
- Lors de la génération de la sortie HTML, QDoc ne décore plus que les liens vers les entités API avec
translate="no". - Les collisions de noms pour les documentations multi-projets ont été réduites. Cela peut avoir un impact sur les noms de fichiers générés dans certaines configurations.
- Les cibles CMake peuvent désormais être spécifiées avec la nouvelle commande
\qtcmaketargetitem. - La prise en charge des arguments de fonction en indice a été supprimée. Cette fonctionnalité n'était pas documentée, n'était pas utilisée et comportait des bogues. Sa suppression permet d'éviter la construction et la tentative de correspondance d'expressions régulières pour chaque signature de fonction documentée et chaque argument de la commande
\a. - Les liens vers les signatures de fonctions sont désormais plus cohérents.
- QDoc prend désormais en charge les valeurs auto-générées dans la documentation QML à partir des enums C++.
- Les variables de configuration
outputprefixesetoutputsuffixess'appliquent désormais à la documentation des types C++ ainsi qu'à la documentation des types et des modules QML. Cela peut être pratique dans les configurations de documentation multi-module où deux modules ou plus définissent les mêmes noms de type.
Changements au niveau des plates-formes
Plates-formes de bureau
Ordinateurs de bureau basés sur Arm
- Vous pouvez maintenant construire et développer Qt et des applications Qt sur des ordinateurs de bureau Windows on Arm.
- Vous pouvez désormais créer et développer Qt et des applications Qt sur des ordinateurs de bureau Linux on Arm.
Windows
- Modification du système de polices pour utiliser DirectWrite comme backend par défaut. Cela permet de bénéficier de certaines fonctionnalités modernes qui n'étaient pas disponibles avec l'ancien backend GDI. L'ancien backend est toujours disponible et peut être activé en passant
fontengine=gdicomme paramètre au plugin QPA.
macOS
- Ajout du support pour macOS 15
- Ajout de la prise en charge des marges de sécurité, à la fois pour l'encoche de la caméra dans les applications plein écran, et pour les fenêtres où le contenu s'étend jusqu'à la barre de titre.
- Correction du scintillement lors du redimensionnement des fenêtres Qt Quick, en présentant la couche Metal avec transaction.
- Activation des animations en cours d'exécution lors du redimensionnement des fenêtres Qt Quick.
- Adoption de la nouvelle API NSCursor pour les curseurs de redimensionnement des cadres de fenêtres.
- Mise en œuvre du protocole NSServicesMenuRequestor pour la prise en charge du menu Services et des outils d'écriture.
Client Wayland sous Linux
- Ajout d'un nouveau style de décoration de fenêtre qui est utilisé sur GNOME et utilise un style similaire à celui de GNOME.
- Le statut modal des dialogues est maintenant transmis au compositeur via le nouveau protocole xdg-dialog-v1.
- L'affichage d'une fenêtre demandera désormais également l'activation du compositeur (sauf si Qt::WA_ShowWithoutActivating est activé).
- Ajout d'un support à qtwaylandscanner pour l'envoi de null pour QString.
- Ajout des options
PUBLIC_CODEetPRIVATE_CODEà qt6_generate_wayland_protocol_client_sources qui contrôlent les options passées àwayland-scanner. - Mise en œuvre de la fonction de capture d'écran à l'aide du service ScreenCast via le portail XDG Desktop à l'adresse Qt Multimedia.
Plates-formes mobiles
Android
- Augmentation de la version minimale supportée à Android 9.
- Ajout de la prise en charge de la propriété build.gradle namespace.
- Ajout d'une propriété CMake QT_ANDROID_PACKAGE_NAME pour définir le nom du paquet.
- Mise à jour de Gradle vers la version 8.10 et de AGP vers la version 8.6.0.
- Ajout de la prise en charge de la construction des paquets de bibliothèque AAR.
- Suppression du backend Android natif dans Qt Multimedia.
- Lors de l'ouverture de bibliothèques avec QLibrary, JNI_OnLoad n'est plus appelé par défaut.
- QtQuickView et QML Embedding :
- Ajout de la prise en charge du typage fort pour l'API QtQuickView.
- Ajout d'une API pour gérer le contenu QML, dans le cadre de laquelle les classes Java sous QtQuickView ont été déplacées vers des classes propres. Cela inclut :
- QtQuickView.SignalListener en QtSignalListener.
- QtQuickView.StatusChangeListener en QtQmlStatusChangeListener.
- QtQuickView Status en QtQmlStatus.
- Ajout des classes Java QtAbstractItemModel, QtAbstractListModel et QtModelIndex, qui englobent respectivement QAbstractItemModel, QAbstractListModel, et QModelIndex.
- Ajout de la prise en charge de l'intégration de QML à partir d'un service.
iOS
- Ajout du support pour iOS 18
- Correction du rapport erroné de UIDevice.currentDevice.orientation via QScreen::orientation()
- Amélioration de l'intégration de l'accessibilité.
visionOS
- Ajout d'un support préliminaire pour visionOS.
Plates-formes embarquées
QNX
- Ajout de la prise en charge de QNX 8.0 en tant qu'aperçu technologique.
- QNX 8.0 n'a pas de support multimédia, utilisez
-skip qtmultimediasur configure.
VxWorks
- Ajout du support de VxWorks 24.03.
Boot to Qt
- Le support de Yocto 5.0 (Scarthgap) a été ajouté.
- Les niveaux de support pour le matériel cible ont été mis à jour avec de nouvelles cartes supportées pour le niveau 1 :
- Raspberry Pi 5.
- Les niveaux de support pour le matériel cible ont été mis à jour avec les nouvelles cartes supportées pour le niveau 2 :
- NVIDIA Jetson AGX Orin Developer Kit (mise à niveau depuis le niveau 3).
- Raspberry Pi 4 64-bit (rétrogradé du niveau 1).
- Les niveaux de support pour le matériel cible ont été mis à jour avec de nouvelles cartes supportées pour le niveau 3 :
- NXP i.MX95 (comme expérimental via le portail client Qt).
- Kit d'évaluation Toradex i.MX 95 Verdin (expérimental via le portail client Qt).
- StarFive VisionFive 2.
- ST STM32MP15 Evaluation (déclassé du niveau 2).
- NXP Kit d'évaluation i.MX 8MQuad (déclassé du niveau 2).
Liste des modifications de l'API
Ces pages contiennent une vue d'ensemble des changements d'API dans Qt 6.8 :
© 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.