Nouveautés de Qt 6.12
Modules nouveaux et réintroduits dans Qt 6.12
Qt 6.12 ajoute les modules et outils suivants :
- Le module «Qt Qml Design Support », qui propose un ensemble de types permettant d’enregistrer et de référencer des objets en QML. Il est destiné aux futurs outils de conception d’ Qt Quick.
Nouvelles fonctionnalités de Qt 6.12
Module ActiveQt
Aucun changement notable.
Qt Bluetooth Module
- Le backend Android respecte désormais les paramètres d’intervalle minimum et maximum de diffusion fournis via QLowEnergyAdvertisingParameters lors du démarrage de la diffusion BTLE.
Module Qt Canvas Painter
- Le module Qt Canvas Painter sort de la phase de préversion technologique et bénéficie désormais d’une maintenance complète (prise en charge).
- Le module dispose désormais de ` QtCanvas2D`, une nouvelle API QML prise en charge par Qt Canvas Painter. Cette API reste en préversion technologique.
- QCanvasPath Il a été enrichi d’une surcharge de la méthode ` addPath()` permettant d’analyser directement les chaînes de chemin SVG.
- QCanvasPainter Il a gagné les méthodes ` QCanvasPainter::FillRule ` et ` QCanvasPainter::setFillRule()` pour prendre en charge la règle de remplissage « EvenOdd » pour les remplissages de chemins.
- QCanvasGradient Ajout de la méthode ` setImage()` pour créer des dégradés directement à partir d’une image.
- QCanvasRadialGradient Ajout de constructeurs et des méthodes setInnerCenterPosition() / setOuterCenterPosition() pour prendre en charge les dégradés radiaux non symétriques (à deux centres).
Qt CoAP Module
Aucune modification notable.
Qt Core Module
- QRangeModelLes points de personnalisation « RowOptions » et « ItemAccess » du module ont été étendus pour prendre en charge «
headerData()», ainsi que l'flags()par ligne et par élément. « QRangeModel » prend désormais en charge « drag'n'drop handling » avec une gestion personnalisée et sécurisée des types MIME dans les deux points de personnalisation, ainsi que les propriétés « supportedDragActions » et « supportedDropActions ». « QRangeModel » implémente désormais également « sort() » avec la prise en charge d'un « sortCollator » pour le tri tenant compte des paramètres régionaux, et « match() » pour une correspondance rapide du contenu. - Ajout de la fonction libre qSharedPointerStaticCast pour les conversions statiques de QSharedPointer.
- QSortFilterProxyModel Ajout de l’énumération DataChangeRelevanceFlag et de la méthode virtuelle dataChangeRelevanceFlags(), permettant aux sous-classes de contrôler si un signal de l’
dataChangedsource déclenche un nouveau filtrage ou un nouveau tri. - La nouvelle méthode ` QAbstractItemModel::compareData()` constitue une nouvelle API protégée permettant de comparer deux `QVariants` d'une manière spécialement conçue pour les cas d'utilisation des vues d'éléments.
- qfloat16 Des opérateurs d’incrémentation et de décrémentation ainsi qu’un opérateur unaire operator+ ont été ajoutés.
- QVariant a gagné des constructeurs à partir de références rvalue.
- QMap et ` QMultiMap ` implémentent désormais les six opérateurs relationnels.
- QVarLengthArray A gagné la méthode ` removeAt()`, correspondant à l'API ` QList `.
- Les méthodes ` fromString()` de ` QDateTime`, ` QDate` et ` QTime`, ainsi que les méthodes ` toDateTime()`, ` toDate()` et ` toTime()` de ` QLocale`, utilisent désormais un nouvel analyseur syntaxique plus rapide pour de nombreux formats.
- QTimeZone accepte désormais les identifiants d’alias IANA canoniques CLDR dans son constructeur et dans la méthode isTimeZoneIdAvailable(). La méthode QTimeZone::availableTimeZoneIds() inclut désormais ces alias.
- QFile::copy() accepte désormais un argument facultatif « QFileDevice::Permissions ». QSaveFile reporte désormais l'application des autorisations demandées jusqu’à l’appel de commit().
- Qt::compareThreeWay() dispose désormais d’une surcharge pour
std::pair. - QCalendarPermission a gagné un mode d'accès « WriteOnly ».
- QFileSystemWatcher peut désormais utiliser
inotifysur FreeBSD 15 et versions ultérieures. - QStandardPaths Sur macOS, la méthode ` standardLocations()` inclut désormais le répertoire `
/Library/Preferences` à l'échelle du système. Sur iOS, la méthode ` PublicShareLocation ` renvoie le chemin d'accès correct et ` TemplatesLocation ` est correctement signalé comme non pris en charge. - QEasingCurve Ajout de la fonction fromCubicBezier(), une aide pratique pour créer des courbes d’accélération de Bézier cubiques.
- QJsonObject Ajout des itérateurs const de type STL : cbegin() et cend(). QJsonDocument dispose désormais de constructeurs rvalue issus de QJsonArray et QJsonObject.
Qt D-Bus Module
Aucun changement notable.
Qt Graphs Module
- Qt Canvas Painter peut désormais être utilisé comme moteur de rendu pour les graphiques 2D. Activez-le lors de la configuration à l’aide du drapeau de configuration
-feature-graphs-2d-high-performance-backend. - Ajout de « QLogValueAxis » (LogValueAxis en QML), un nouveau type d’axe logarithmique pour les graphiques 2D.
- QXYSeries Ajout des propriétés ` values`, ` valueMapping`, ` valueMin` et ` stepSize ` pour la saisie déclarative de données depuis QML.
- QPieSeries a gagné les propriétés sliceData et sliceLabels pour la saisie déclarative de données depuis QML.
- QValueAxis et QLogValueAxis dispose désormais d’une propriété labelPostFormat permettant de personnaliser le texte des étiquettes d’axe.
- Q3DGraphsWidgetItem a gagné les propriétés ` panEnabled ` et ` dragMode ` pour activer et configurer le panoramique dans les graphiques 3D.
- QDateTimeAxis A ajouté une propriété « tickCount ».
Qt GRPC Module
- Ajout de la compression des requêtes côté client. La nouvelle énumération ` QtGrpc::CompressionAlgorithm ` peut être sélectionnée via les méthodes ` QGrpcChannelOptions::setRequestCompression()` et ` QGrpcCallOptions::setRequestCompression()` pour compresser les messages sortants.
- Ajout des méthodes supportedCompressionAlgorithms(), acceptedCompressionAlgorithms() et setAcceptedCompressionAlgorithms() à QGrpcChannelOptions afin de contrôler les algorithmes de compression que le client indique dans l’en-tête de requête
grpc-accept-encodinget qu’il est prêt à accepter dans les réponses du serveur. - Ajout des méthodes ` maximumReceiveMessageSize()` et ` setMaximumReceiveMessageSize()` aux URL QGrpcChannelOptions et QGrpcCallOptions afin de limiter la taille des messages entrants.
Qt GUI Module
- Ajout de la prise en charge du rendu indirect à QRhi. Il est désormais possible de créer des tampons de type
IndirectDrawBufferet d’émettre des appels de dessin indirects via QRhiCommandBuffer. - QRhi Ajout du drapeau de fonctionnalité ShaderDrawParameters permettant de vérifier la prise en charge des paramètres de dessin intégrés dans les shaders (par exemple,
gl_DrawID). - Le backend Vulkan « QRhi » utilise désormais `
VK_EXT_device_fault` pour signaler des détails supplémentaires en cas de perte de périphérique. - QAccessibilityHints Ajout d’une propriété « motionPreference » pour les préférences d’accessibilité relatives à la réduction des mouvements.
- QStyleHints Ajout de toolTipWakeUpDelay, permettant aux applications d’interroger ou d’ajuster le délai avant l’apparition d’une info-bulle.
- QImageReader Ajout de la méthode ` effectiveSize()`, qui renvoie la taille de l’image en respectant la méthode ` autoTransform()`.
- QTextCursor::deletePreviousChar() (Retour arrière) gère désormais correctement les séquences d'émojis à plusieurs unités de code.
- Ajout de la méthode ` Qt::InputMethodHint::ImhNoFullscreen ` pour demander que la méthode de saisie n’occupe pas tout l’écran.
- Ajout de la méthode Qt::InputMethodHint::ImhDecimalNumbersOnly pour limiter la saisie aux nombres comprenant la virgule décimale, mais pas aux nombres négatifs.
Qt HTTP Server Le module
- QHttpServerConfiguration a été enrichi de la méthode setMaximumConnections() pour limiter le nombre total de connexions simultanées, et de la méthode setMaximumConnectionsPerHost() pour limiter le nombre de connexions par adresse IP.
Qt Image Formats Module
Aucune modification notable.
Qt Lottie Animation Module
- Ajout de la prise en charge de la couche de texte Lottie, y compris le rendu des chemins de glyphes.
- Ajout de la prise en charge des dimensions animées dans les éléments de forme Lottie ( ellipse, rectangle et polystar ), ainsi que des contours dégradés, des masques de calque et de la fonctionnalité d’orientation automatique des calques.
- Ajout de la prise en charge des fonctionnalités de remappage temporel et d’étirement temporel de Lottie.
- Introduction d’un type « ` LottieVectorImageController ` » permettant de contrôler la lecture des animations Lottie dans un ` VectorImage`. Ce type expose les propriétés ` currentFrame`, ` frameRate`, ` startFrame` et ` endFrame `, ainsi que des méthodes de lecture telles que ` play()`, ` pause()` et ` gotoAndPlay()`.
Qt MQTT Module
Aucun changement notable.
Qt Multimedia Le module
- QScreenCapture et QWindowCapture disposent désormais d’une propriété maximumFrameRate permettant de limiter la fréquence d’images de capture. Cette même propriété est disponible sur les types QML ScreenCapture et WindowCapture.
- QAudioSource QAudioSink disposent désormais des méthodes () et () pour interroger et contrôler la taille de la période du tampon audio natif. nativePeriodFrameCount setNativePeriodFrameCount
- Ajout des méthodes QMediaCaptureSession::setNativeVideoSource() et de l'élément QML GStreamerVideoSource, permettant à un pipeline GStreamer personnalisé d'alimenter un QMediaCaptureSession en images vidéo.
- QMediaMetaData::ThumbnailImage est obsolète ; les backends ne le rempliront plus. Utilisez plutôt CoverArtImage.
- QSoundEffect émet désormais systématiquement sourceChanged après setSource(), même lorsque l'URL ne change pas.
Qt Network Module
- Introduction de QSslKeyingMaterial et de QSslConfiguration::keyingMaterial() / setKeyingMaterial() pour exposer les exportateurs de matériel de chiffrement TLS (RFC 5705).
- QHostInfo Ajout de la fonction clearCache() pour vider le cache des résultats DNS par programmation.
- QHttpHeaders Ajout des opérateurs de flux QDataStream, rangeValues() pour analyser l’en-tête «
Range» et setRangeValues() pour le définir. La nouvelle classe QHttpHeaderRange représente une plage d’un seul octet au sein de cet en-tête. - Le backend OpenSSL TLS prend désormais en charge la compilation avec OpenSSL 4.
Qt Network Authorization Module
Aucun changement notable.
Qt OPC UA Module
Aucun changement notable.
Module Qt OpenAPI
- La fonction qt_add_openapi_client() dispose désormais des options
GENERATE_DOCUMENTATIONetDOCUMENTATION_OUTPUT_DIRECTORYpermettant de générer une documentation Doxygen en même temps que le code client. - Ajout de la prise en charge de la fonctionnalité « oneOf » du schéma.
- Les accesseurs de propriétés du modèle généré ont été renommés. Q_PROPERTY expose désormais les mêmes noms de propriétés que ceux utilisés dans le fichier YAML.
- Les méthodes de l’API client générées ne sont plus virtuelles.
Qt Positioning Le module
- QGeoSatelliteInfo::SatelliteSystem a été enrichi d’entrées pour les systèmes satellitaires IRNSS et SBAS.
Qt Print Support Module
Aucun changement notable.
Qt Protobuf Module
- Les propriétés Qt dans les classes de messages générées sont désormais marquées par défaut avec le modificateur FINAL. Cela permet aux outils QML d’appliquer des optimisations de performances et de générer un code plus efficace. Utilisez la nouvelle option
GENERATE_NON_FINAL_PROPERTIESde la fonction qt_add_protobuf() pour revenir à l’ancien comportement.
Qt Qml Module
- QQmlEngine a été enrichi de la méthode ` setExternalSingletonInstance()` permettant d’enregistrer un objet C++ créé en externe en tant que singleton QML. La méthode ` QML_UNCREATABLE ` peut désormais être combinée avec `QML_SINGLETON`.
- string.arg() dans QML accepte désormais plusieurs arguments, conformément aux conventions JavaScript.
- Ajout de la fonction globale ` Qt.escapeHtml()` pour échapper les caractères spéciaux HTML dans QML.
- Lors de l’instanciation d’un composant dont certaines propriétés obligatoires sont manquantes, le moteur signale désormais une erreur au lieu de construire silencieusement un objet incomplet.
- QQmlProperty est un type de valeur nommé appelé qmlProperty . Vous pouvez l’utiliser comme type de propriété, argument de fonction ou type de retour dans QML.
- QtQml.Models import : L’ SortFilterProxyModel a gagné les types de filtres composites RangeFilter, RegExpFilter, AllOfFilter et AnyOfFilter, ainsi qu’un FunctionFilter amélioré acceptant les noms de rôles en tant qu’arguments distincts.
- Qt.labs.qmlmodels import : TreeModel a été enrichi des méthodes insertRow() et moveRows().
- Qt Qml Compilateur:
QQmlSA::FixSuggestion::hint()etQQmlSA::FixSuggestion::setHint()ont été supprimés.QQmlSA::FixSuggestion::fixDescription()a été renommé QQmlSA::FixSuggestion::description().
Qt Quick Module
- Ajout du singleton QML « Color », fournissant des fonctions utilitaires pour la manipulation des couleurs.
- AnimatedImage Le type dispose désormais des propriétés ` loops` et ` finishBehavior `, ainsi que d’un signal ` finished()`.
- Le type ` Text ` affiche désormais correctement toutes les valeurs de ` QTextCharFormat::UnderlineStyle ` (telles que `
DashUnderline`, `WaveUnderline` et `SpellCheckUnderline`) pouvant être appliquées via le balisage HTML en mode «RichText» ou via ` QTextCharFormat ` dans l’API C++. Auparavant, tous les styles de soulignement étaient affichés sous forme de lignes pleines. - Ajout de la propriété ` strokeGradient ` au type ` ShapePath `.
- Rectangle::color Il est désormais possible de rétablir sa valeur par défaut (blanc) en attribuant la valeur «
undefined» à la propriété dans QML. - Le type « FolderListModel » de « Qt.labs.folderlistmodel » dispose désormais des propriétés « showDot » et « showDotDot ».
- Le type ` VectorImage ` dans ` QtQuick.VectorImage ` dispose désormais des propriétés ` asynchronous`, ` status`, ` retainWhileLoading` et ` generatedItem `.
Qt Quick Controls Module
- Ajout du style «
QtQuick.Controls.Native».import QtQuick.Controls.Nativechoisit le style le mieux adapté à la plateforme pour laquelle vous compilez, au moment de la compilation. Il combine ainsi les avantages de la sélection de style au moment de la compilation avec la possibilité de donner à votre application une apparence spécifique à la plateforme. - ToolTip A ajouté une propriété « policy » pour contrôler la visibilité automatique des info-bulles.
- ComboBox A ajouté une propriété « highlightOnHover ».
- RangeSlider Ajout d’une propriété « crossingEnabled » permettant d’autoriser ou d’empêcher les deux poignées de se croiser.
- Menu Ajout d’une propriété « separatorsCollapsible ».
- MenuItem Affiche désormais le raccourci clavier à partir d’une propriété « Action » associée.
- SearchField Permet désormais la navigation à l’aide des touches si son TextInput est vide.
- Un sous-ensemble des API d’ TextField existantes a été ajouté à SearchField pour plus de commodité : selectTextByMouse, selectedText, selectionStart, selectionEnd, cursorPosition, select(), selectWord() et deselect().
Qt Quick Dialogs Module
Aucun changement notable.
Qt Quick Effects Module
Aucun changement notable.
Qt Quick Test La
- TestCaseLa propriété ` optional ` du module est obsolète dans Qt Quick Test. Utilisez plutôt ` skip()`.
Qt Quick Module 3D
- Ajout du type QML ` SkyMaterial ` permettant de rendre un ciel procédural et de générer des données d’éclairage basées sur des images.
- Ajout de ` QuadTextureProvider ` à l'importation ` QtQuick3D.Helpers `. Type QML utilisé pour rendre une texture quadrangulaire à l'aide d'un shader de fragment personnalisé.
- Model A ajouté une propriété ` instancingLodFactor ` pour le contrôle manuel du niveau de détail lors de l’utilisation de l’instanciation GPU.
- ExtendedSceneEnvironment Ajout des propriétés ` ssrThickness ` et ` ssrMaxSteps ` pour un contrôle plus fin des reflets dans l’espace écran.
- RuntimeLoader Ajout des méthodes ` query()` et ` queryAll()` permettant de rechercher des objets par nom ou par type au sein d'une scène chargée dynamiquement.
Qt Quick Module 3D XR
- Ajout de la prise en charge de la configuration en vue mono (
XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO), permettant aux applications 3D XR Qt Quick de fonctionner sur des appareils XR 2D tels que les lunettes de RA.
Qt Quick 3D Physics Module
- Ajout de cinq types d’articulations pour contraindre les corps physiques : DistanceJoint, FixedJoint, PrismaticJoint, RevoluteJoint et SphericalJoint. Tous partagent le type de base commun PhysicsJoint.
Qt Remote Objects Module
- Les propriétés « registryUrl » et « persistedStore » disposent désormais de signaux de notification de modification.
Qt SCXML Module
Aucun changement notable.
Qt Sensors Module
Aucun changement notable.
Qt Serial Port Module
Aucune modification notable.
Qt Spatial Audio Module
Aucun changement notable.
Qt Serial Bus Module
Aucun changement notable.
Qt SQL Module
Aucun changement notable.
Qt SVG Module
- Les fichiers SVG animés sont désormais pris en charge par QMovie et AnimatedImage.
Module StyleKit de Qt Labs
- Lancement de QStyleKitStyle, une sous-classe de QStyle qui applique des styles basés sur StyleKit aux applications QWidget.
- Ce style fournit désormais des implémentations pour les types Qt Quick Controls RoundButton et MenuSeparator, remplaçant ainsi la solution de secours générique.
Module Qt TaskTree
- QtTaskTree::For a été doté d’une surcharge acceptant
qsizetypepour le nombre d’itérations. Utilisez-la comme raccourci pourFor(RepeatInterator(n)). - QtTaskTree::Forever est désormais implicitement convertible en QtTaskTree::Group.
- QtTaskTree::ListIterator a été doté d’une surcharge acceptant une fonction getter renvoyant un ` QList`.
Qt Test Module
- Les résultats des benchmarks incluent désormais la variance et l'écart-type entre les différents backends de mesure (temps, ticks CPU, événements, Valgrind).
- L'enregistreur de benchmark en texte clair formate désormais les résultats en virgule flottante en utilisant la notation scientifique pour plus de cohérence.
- Lorsque des fonctions de test inexistantes sont spécifiées sur la ligne de commande aux côtés de fonctions valides, les tests valides sont tout de même exécutés.
Qt Virtual Keyboard Module
Aucun changement notable.
Qt WebEngine Module
- QWebEngineNavigationRequest a été doté d'une propriété userInitiated permettant de distinguer les navigations initiées par l'utilisateur de celles effectuées par programmation.
- QWebEngineProfile a été enrichi de la méthode `setCryptoModulePasswordFunction()` afin de fournir une fonction de rappel pour le déverrouillage des clés matérielles PKCS#11.
Qt WebSockets Module
Aucun changement notable.
Qt PDF Module
- QPdfSearchModel a été doté d’une propriété « status » et d’une énumération « Status » permettant d’indiquer si une recherche est en cours, en attente ou terminée.
- QPdfView prend désormais en charge le zoom à l'aide de la molette de la souris tout en maintenant la touche Ctrl enfoncée, centré sur la position du curseur.
- render() dispose désormais d'arguments facultatifs permettant de spécifier le format de l'image et la couleur d'arrière-plan.
Qt WebView Module
- WebView peut désormais charger du contenu à partir du système de ressources Qt (URL de type
qrc:/) sur Android, iOS, macOS et Windows.
Qt Widgets Module
- QTreeView dispose désormais de la méthode ` QTreeView::itemDecorationRect()`, qui renvoie le rectangle englobant de la décoration (icône) correspondant à un index donné.
- QStyle::StandardPixmap a gagné les méthodes QStyle::SP_TabScrollLeftButton, QStyle::SP_TabScrollRightButton, QStyle::SP_TabScrollUpButton et QStyle::SP_TabScrollDownButton pour les boutons de défilement de la barre d'onglets.
- QDialogButtonBox Ajout des méthodes QDialogButtonBox::standardButtonText() et QDialogButtonBox::standardButtonShortcut(), qui renvoient respectivement le texte et le raccourci d’un QDialogButtonBox::StandardButton.
- Sous macOS, le mode « titre et barre d’outils unifiés » de QMainWindow a été modernisé afin d’utiliser des vues d’effet pour la mise en forme de l’arrière-plan.
Qt XML Module
Aucun changement notable.
Outils
Qt Assistant
- Qt Assistant affiche désormais correctement les diagrammes SVG en mode clair ou foncé lorsqu'un thème de couleur foncée est activé, conformément au comportement de la documentation Qt en ligne.
Outils en ligne de commande QML
- Ajout de l'option `
--only-explicit-categories` à ` qmllint ` pour supprimer tous les avertissements par défaut. - Les types non enregistrés utilisés dans les propriétés et les méthodes de types enregistrés sont désormais enregistrés dans qmltypes en tant que types « opaques ». Cela évite les avertissements dans les outils, permet le fonctionnement de la saisie semi-automatique et de la fonction « aller à la définition » dans qmlls, et permet la compilation liée vers C++ dans davantage de cas.
- Modification de qmllint et qmlls pour qu’ils n’émettent qu’un seul avertissement concernant les types inconnus, au lieu de générer des avertissements pour chaque liaison et chaque utilisation de ce type inconnu.
- Ajout de nouveaux avertissements dans qmllint et qmlls pour :
- Les membres de type QML masqués.
- Variantes de fichiers sélectionnées incompatibles (optionnelle).
- Les types QML instanciés de manière récursive.
- Les types QML référencés par leur nom de fichier plutôt que par leur nom dans qmldir ou
QT_QML_SOURCE_TYPENAME. - Utilisations en JavaScript de la surcharge de `
new Array()` prenant plus d’un argument.
- Ajout de fonctionnalités dans l’ QML Language Server permettant de :
- Envelopper des composants dans un chargeur via une action de code.
- Rechercher les définitions C++ des types déclarés via
QML_FOREIGN. - Afficher la progression lors des reconstructions en arrière-plan des informations de type QML.
Générateur de documentation QDoc
- Concepts C++20: la nouvelle \concept génère une page de référence dédiée à un concept C++20, comprenant une liste des types et fonctions documentés qui sont soumis à ce concept. Les références aux concepts dans les synopsis C++ renvoient vers ces pages, tant dans les sorties HTML que DocBook, et les paramètres de modèle directement contraints par un concept (tels que `
template <Integral T>`) affichent le nom du concept à la place du mot-clé `typename`. Les liens vers les concepts fonctionnent au-delà des limites des modules grâce aux fichiers `.index`. enable_ifLes contraintes SFINAE basées sur `requires` s’affichent sous forme de clauses ` ` lisibles au lieu de paramètres de modèle booléens opaques et sans nom, étendant ainsi la prise en charge des clauses `requires` de C++20 introduite dans Qt 6.11. Lorsqu’une fonction comporte également une clause `requires` explicite, les deux sont combinées.- Les fonctions explicitement définies par défaut et supprimées portent les balises «
[default]» et «[delete]» dans le synopsis, tandis que les fonctions membres spéciales générées par le compilateur sont balisées «[implicit]». Ces balises renvoient vers cppreference.com. Pour ces fonctions sans bloc \fn bloc, QDoc génère automatiquement de la documentation sans émettre d’avertissements. La documentation explicite remplace le texte généré, et le fait de définir la variable de configuration ` showautogenerateddocs ` sur `false` permet de l’omettre de la sortie. - QDoc fait la distinction entre les « amis cachés » — fonctions amies accessibles uniquement via une recherche dépendante des arguments — et les déclarations d’amitié qui se contentent d’accorder l’accès. Documentez les « amis cachés », y compris ceux définis hors ligne, en utilisant leur syntaxe naturelle de fonction libre, telle que `
\fn operator==(const MyClass &, const MyClass &)`, plutôt qu’un nom qualifié par la classe. - Un tableau unifié remplace les paragraphes épars de documentation comparative générés par l’option \compares et \compareswith , permettant de voir d’un seul coup d’œil avec quels types une classe effectue des comparaisons et quelle catégorie de comparaison s’applique à chaque relation.
- La \a commande valide désormais les noms de paramètres de modèle. QDoc signale les paramètres de modèle non documentés dans les classes et les alias de type, ainsi que les paramètres non liés à un type ou les paramètres « modèle-modèle » non documentés dans les fonctions.
- Personnalisez le descripteur d’état et le message générés par la \preliminary commande à l’aide de la variable de configuration préliminaire, ce qui permet d’utiliser une terminologie telle que « Technology Preview » à la place de la valeur par défaut. Les commandes d’état s’appliquent selon un ordre de priorité cohérent : «
\preliminary» prévaut sur «\modulestate», et «\internal» prévaut sur les deux. - Un état défini sur un sujet de type «
\module» ou «\qmlmodule», tel que «\preliminary» ou «\deprecated», se propage aux membres du module, sauf si un membre définit son propre état. - La nouvelle \qmluncreatabletype commande « topic » documente les types QML qui sont enregistrés auprès du système de types QML mais qui ne peuvent pas être instanciés. QDoc détecte également automatiquement les types annotés avec la macro
QML_UNCREATABLE. - Les propriétés, signaux et méthodes associés sont annotés dans les pages de référence QML principales, et pas seulement dans les pages « tous les membres ».
- La \qmlmethod commande nécessite une signature complète ; QDoc affiche un avertissement lorsque le type de retour est manquant ou que la liste des paramètres ne peut pas être analysée.
- Les instructions `include` dans la documentation des classes reflètent les noms réels des fichiers d’en-tête signalés par Clang. Les projets utilisant des en-têtes de commodité de style Qt (tels que `
<QString>`) continuent de fonctionner automatiquement. - Chaque projet dispose d’un seul fichier `
.index` dans le répertoire de sortie de base, remplaçant les copies spécifiques à chaque format situées dans les sous-répertoires dédiés. Les chemins relatifs de la variable de configuration `indexes` sont résolus par rapport à l’emplacement du fichier `.qdocconf`, conformément aux autres variables de chemin. - Les fichiers HTML générés incluent des entrées d’
<meta name="keywords">s automatiques en fonction du type de page (classe, type QML, module, exemple, etc.), ce qui facilite le post-traitement et la génération du plan du site. Les blocs de code comportent des balises compatibles avec la coloration syntaxique de highlight.js. - Petites améliorations apportées à la rédaction de la documentation : utilisez \meta
qdoc-suppress-inheritancepour supprimer la ligne « Inherits: » pour les types héritant d’une classe de base, à des fins de documentation uniquement ; \list prend en compte les valeurs de départ égales ou inférieures à zéro ;\#représente un caractère littéral «#» dans les cibles de liens de type\l; et \details impose son argument de résumé délimité par des accolades, tel que documenté. - Ajout de la compatibilité avec LLVM/Clang 22.
Qt Linguist
- lupdate conserve désormais les fins de ligne existantes dans les fichiers
.ts. Sous Windows, les fichiers dont les fins de ligne sont au format CRLF sont mis à jour sur place avec CRLF ; les fichiers dont les fins de ligne sont au format LF et les nouveaux fichiers conservent le format LF. - Qt Linguist Dispose d’une nouvelle option -web-help permettant d’utiliser la documentation en ligne si souhaité.
Resource Compiler (rcc)
- rcc déduplique désormais les données de ressources à l'aide d'un hachage SHA256 basé sur le contenu. Les fichiers identiques intégrés dans une collection de ressources Qt ne sont stockés qu'une seule fois, ce qui réduit la taille des ressources compilées sans aucune modification du code source de l'application.
Modifications apportées à la plateforme
Modifications du système de compilation
Compilation de Qt
- La compilation de Qt nécessite désormais CMake 3.25 ou une version ultérieure.
- Ajout de la fonctionnalité CMake «
static_compiler_runtime» pour lier statiquement les bibliothèques d'exécution C++. Sous Windows (MSVC), cette fonctionnalité utilise la méthode Hybrid CRT, supprimant ainsi la dépendance vis-à-vis du package de redistribution Visual C++. - La compilation de Qt pour Android utilise désormais Gradle au lieu d'appeler directement `
javac` pour les cibles JAR de Qt.
API CMake
- L'utilisation de Qt nécessite désormais CMake 3.25 ou une version ultérieure.
- Les API CMake suivantes ne sont plus en préversion technologique et sont désormais entièrement prises en charge : qt_finalize_project(), qt_extract_metatypes(), qt_deploy_translations(), QT_TARGETS_FOLDER, QT_RESOURCE_PREFIX, QT_DEPLOY_SUPPORT et QT_ENABLE_VERBOSE_DEPLOYMENT.
- La propriété de cible «
qt_no_entrypoint» a été renommée « QT_NO_ENTRYPOINT ». L’ancien nom est toujours reconnu à des fins de compatibilité ascendante. - Ajout de la politique CMake «
QTP0006». Lorsqu’elle est définie sur «NEW», les fonctions ` qt_generate_wayland_protocol_client_sources() ` et ` qt_generate_wayland_protocol_server_sources() ` utilisent par défaut `PRIVATE_CODE` au lieu de `PUBLIC_CODE`. - Les messages de progressionde `qt_add_shaders()` sont désormais consignés au niveau «
DEBUG» au lieu de «NOTICE», ce qui les supprime de la sortie par défaut de la compilation. Passez `--log-level=NOTICE` à CMake pour rétablir le comportement précédent. - La fonction `qt_add_qml_module()` dispose désormais d’une option `
NO_GENERATE_QTCONF` permettant de désactiver la génération automatique de fichiers `qt.conf` dans le répertoire de compilation. - Le système de compilation propose désormais une cible <exe>_qmlpreview pour chaque exécutable comportant un module QML. Lorsque vous « compilez » cette cible, le système de compilation lance l’utilitaire qmlpreview avec les arguments appropriés et vous permet de prévisualiser votre exécutable en QML. Il résout notamment automatiquement les chemins d’accès aux fichiers .qrc.
- Deux nouvelles valeurs de cible, QT_WINDOWS_APP_PROJECT_IDENTIFIER et QT_WINDOWS_APP_PROJECT_EXECUTION_LEVEL, sont désormais disponibles. Voir également la section Windows ci-dessous.
Plateformes de bureau
Windows
- Les projets CMake génèrent et intègrent désormais automatiquement un manifeste d’application pour les exécutables Windows compilés avec qt_add_executable(). Ce manifeste déclare la compatibilité avec Windows 10/11, prend en charge les chemins d’accès longs et configure le niveau d’exécution de l’UAC. Deux nouvelles propriétés de cible CMake contrôlent le manifeste généré : QT_WINDOWS_APP_PROJECT_IDENTIFIER définit le nom d’identité de l’assembly, et QT_WINDOWS_APP_PROJECT_EXECUTION_LEVEL définit le niveau d’exécution. Voir Qt pour Windows - Déploiement pour plus de détails.
- windeployqt dispose désormais des options
--appxet--appx-certificatepour générer un fichier «AppxManifest.xml» adapté au packaging en tant que package appx du Windows Store. - QOperatingSystemVersion::Windows11_25H2 (10.0.26200) est ajouté en tant que constante de version d’OS nommée.
- Sous Windows, le plugin de plateforme détermine désormais l’espace colorimétrique de chaque écran à partir de son profil ICC via
ColorProfileGetDisplayDefault, au lieu de toujours renvoyer sRGB. - Le backend de polices DirectWrite lit désormais la table GASP de chaque police pour sélectionner la stratégie d’anticrénelage appropriée en fonction de la police et de la taille des caractères, ce qui correspond davantage à l’intention du concepteur de la police.
- Le cache disque des shaders est réactivé pour les pilotes GPU Intel actuels. Il avait été désactivé sans condition pour les cartes graphiques Intel sous Windows depuis plusieurs années ; une vérification de la version du pilote est désormais utilisée à la place, ce qui améliore les performances 3D d’ Qt Quick sur le matériel Intel moderne.
- QWizard Le style « Aero Wizard » n’est plus appliqué lorsque le système est en mode sombre, car il ne s’affiche pas correctement dans ce mode.
- ARM64EC est désormais entièrement pris en charge par Visual Studio 2026. Il n’existe pas de packages d’installation. Certains modules tels qu’ Qt WebEngine, Qt WebView et Qt Quick 3D Physics ne sont pas pris en charge.
Linux
- QDesktopServices::openUrl() privilégie désormais le service de portail de bureau XDG
org.freedesktop.portal.OpenURI, s’il est disponible, plutôt quexdg-openet les autres solutions de secours. Le portail peut se comporter différemment des applications utilisées auparavant. - Les solutions de secours utilisées lorsqu’aucun portail n’est disponible ont été mises à jour :
kde-opende Plasma 6 est désormais reconnu, tandis que la prise en charge dekfmclient, datant de l’ère KDE 3, a été supprimée. - La nouvelle propriété motionPreference est renseignée à partir des paramètres du bureau : la clé
reduced-motiondans l’espace de nomsorg.freedesktop.appearancedu portail, et le paramètre GNOMEorg.gnome.desktop.interfaceenable-animations. - La boîte de dialogue native des polices GTK3 prend désormais en compte les options de filtrage des polices de QFontDialog, tant pour les polices redimensionnables par rapport aux polices non redimensionnables que pour les polices à espacement fixe par rapport aux polices proportionnelles.
- Le pont d'accessibilité AT-SPI informe désormais les technologies d'assistance des modifications apportées aux états « développé » et « extensible ».
- Les polices ajoutées à partir des ressources Qt sont à nouveau correctement enregistrées lors de l’exécution avec fontconfig 2.17.1 ou une version ultérieure.
- Sous X11, les fenêtres d’info-bulle ne sont plus recréées à chaque fois qu’elles s’affichent.
- QNetworkProxy comprend désormais le schéma «
socks5h» dans les variables d’environnement «*_PROXY» lors de l’utilisation du backend libproxy.
macOS
- QScreen::grabWindow() utilise désormais ScreenCaptureKit à la place de l’
CGDisplayCreateImageForRect, qui est obsolète. Une demande d’autorisation s’affichera lors de la première utilisation de l’API. - QWindows Les
NSViews enfants non retournés conservent désormais leur position par rapport au coin supérieur gauche de la superview lorsque celle-ci est redimensionnée. QCocoaNativeInterface::setEmbeddedInForeignView()Il n’est plus nécessaire ni pris en charge d’intégrer une hiérarchie de vues Qt dans uneNSViewétrangère. Qt gère désormais cela automatiquement.- Les applications en mode « sandbox » compilées à partir d’une version statique de Qt sont désormais relocalisables par défaut sur les plateformes Apple.
- QMainWindowLe mode unifié de titre et de barre d'outils est désormais implémenté via ` Qt::ExpandedClientAreaHint ` et ` Qt::NoTitleBarBackgroundHint ` au lieu du style texturé `
NSWindow`, désormais obsolète. - QStandardPaths::standardLocations() inclut désormais le répertoire système
/Library/PreferencespourConfigLocation,GenericConfigLocationetAppConfigLocation.
Client Wayland sous Linux
- Ajout de la prise en charge de l’extension de protocole Wayland «
XdgSessionManager» pour la restauration de session. - Le thème de décoration côté client « bradient » affiche désormais des infobulles pour les boutons de réduction, d’agrandissement et de fermeture.
Compositeur Wayland
- Ajout de la prise en charge du protocole stable
linux-dmabuf-v1, version 4. Pour l’utiliser, sélectionnez « linux-dmabuf-v1 » comme intégration de tampon client. L’implémentation précédente (version 3) peut toujours être utilisée sous le nom « linux-dmabuf-unstable-v1 » à des fins de compatibilité.
HarmonyOS
Qt 6.12 introduit la prise en charge d’HarmonyOS (niveau d’API OpenHarmony 23, HarmonyOS 6.1.0) en tant qu’aperçu technologique. Vulkan est pris en charge, tandis que l’accessibilité et EmbeddedUIExtensionAbility ne sont pas encore disponibles.
Les outils et fonctions CMake suivants sont fournis pour faciliter la compilation et le déploiement d'applications Qt sur HarmonyOS :
- harmonydeployqt empaquette une application Qt sous la forme d’un paquet d’application HarmonyOS (HAP), copie les bibliothèques et plugins Qt requis, génère les métadonnées d
build-profile.json5et demodule.json5, et prend en charge l’intégration de la configuration de signature HAP. harmonyostestrunnerexécute les autotests Qt sur un appareil HarmonyOS connecté ou un émulateur viahdc, déclenchés depuisctest.- qt_add_harmonyos_permission() déclare les autorisations HarmonyOS requises par l'application.
Les principales propriétés des cibles CMake pour le déploiement sur HarmonyOS sont les suivantes :
- QT_HARMONYOS_EXTRA_LIBS — bibliothèques partagées supplémentaires à inclure dans le HAP.
- QT_HARMONYOS_EXTRA_PLUGINS — plugins Qt supplémentaires à déployer.
- QT_HARMONYOS_PACKAGE_SOURCE_DIR — un répertoire dont le contenu est fusionné dans le modèle de projet HarmonyOS généré avant la compilation du HAP.
Pour obtenir la liste complète des limitations connues de la plateforme, consultez la page wiki consacrée aux limitations de la plateforme Qt pour HarmonyOS.
Plateformes mobiles
Android
Qt pour Android
- Mise à jour de Gradle vers la version 9.5.1 et du plugin Gradle pour Android vers la version 9.2.1.
- Mise à jour de la version SDK cible par défaut vers Android 17 (niveau d'API 37).
- Ajout de la prise en charge du geste prédictif « Retour » sur Android 13 et versions ultérieures. Qt transmet les événements « Retour » via
OnBackInvokedCallbacket active par défaut l’attribut de manifeste «android:enableOnBackInvokedCallback». - Ajout de la prise en charge des builds Gradle multi-modules, activée via QT_ANDROID_GRADLE_MULTI_MODULE. Il s’agit de la base de Play Feature Delivery. CMake gère l’ensemble du pipeline de déploiement sans androiddeployqt ni outils tiers, ce qui rend les builds plus rapides et plus simples.
- La variable CMake
QT_USE_ANDROID_MODERN_BUNDLEa été dépréciée au profit de QT_ANDROID_GRADLE_MULTI_MODULE. L’ancien nom est toujours reconnu à des fins de compatibilité ascendante. - Ajout de la prise en charge des suggestions de méthode de saisie « Qt::InputMethodHint::ImhNoFullscreen », « ImhDecimalNumbersOnly » et « ImhNoEditMenu ».
- Appuyer sur la touche « Retour » place désormais l’application en arrière-plan au lieu de la fermer ; voir « Touche Retour » et « Geste de retour ».
- Améliorations de l'accessibilité pour TalkBack :
- Qt réagit désormais à l’action «
ACTION_SHOW_ON_SCREEN». - Qt signale désormais les changements de zone d'affichage et de position de défilement.
- Qt prend désormais en charge les états « expandable » et « expanded ».
- Le clavier virtuel ne s’ouvre plus lorsque le focus d’accessibilité se déplace vers un champ de saisie de texte.
- L'indication « motionPreference » reflète désormais le paramètre « Remove animations » du système.
- Qt réagit désormais à l’action «
- androidtestrunner reconnaît désormais les options «
--serial» et «--output», détecte les déconnexions d’appareils pendant l’exécution d’un test et affiche des diagnostics améliorés en cas de plantage ou de « Application ne répond pas » (ANR). - Qt déploie désormais automatiquement les bibliothèques OpenSSL lorsque la version intégrée de FFmpeg en a besoin, en les localisant via
OPENSSL_ROOT_DIRou vcpkg. - Le modèle Gradle n’impose plus l’utilisation d’
resConfig "en".
Qt Quick pour Android
iOS
- QStandardPaths::PublicShareLocation renvoie désormais
<APPROOT>/Public(correspondant àNSSharedPublicDirectory) au lieu du chemin d'accès précédemment généré à l'intérieur du répertoire Documents. - standardLocations(
PicturesLocation) ne contient plus d'entrée en double pour le chemin d'accès « Documents/Pictures » accessible en écriture. - QStandardPaths::TemplatesLocation est désormais correctement signalé comme non pris en charge sur iOS, conformément à la documentation existante.
Plates-formes embarquées
Boot to Qt et Qt Onboard
- À partir de Qt 6.12 LTS, les images précompilées d’ Boot to Qt ne sont plus disponibles au téléchargement via Qt Online Installer ni depuis votre compte Qt.
À la place des binaires, deux versions basées sur des conteneurs sont désormais proposées :
- Un conteneur de compilation: un environnement prêt à l'emploi dans lequel tous les outils de compilation nécessaires sont préinstallés, permettant de créer rapidement des images Linux basées sur Yocto pour votre matériel cible.
- Un conteneur de démo: il contient le Qt Demo Launcher ainsi qu’un ensemble soigneusement sélectionné de démos qui mettent en avant les capacités de Qt dès leur installation.
Les conteneurs sont introduits par étapes au cours du cycle de publication des correctifs de Qt 6.12 LTS, la distribution complète basée sur des conteneurs étant mise en place avant la sortie de la version Qt 6.12.4.
- Nouvelles plateformes :
- Orange Pi 2
- NXP i.MX95
- Qualcomm Dragonwing IQ6
- Qualcomm Dragonwing IQ9
- Renesas RZ/G3E
Systèmes d'exploitation en temps réel
QNX
- Ajout de la prise en charge de Vulkan sur QNX.
- Qt Multimedia La compilation s'effectue désormais sur QNX 8.0. La lecture et l'enregistrement audio ne sont pas encore disponibles, car le backend audio n'a pas encore été implémenté pour QNX SDP 8.0.
VxWorks
- Ajout de la prise en charge de VxWorks 26.03.
WebAssembly
- QAudioSource et QAudioSink utilisent désormais le backend AudioWorklets de l’API Web Audio à la place d’OpenAL, ce qui permet une capture audio à faible latence native du navigateur.
- Les images vidéo sont désormais transférées vers WebGL via
texImage2Dpour un rendu sans copie lors de l'utilisation de Qt Quick. - Ajout de la prise en charge d’ QCameraFormat.
Liste des modifications apportées aux API
Ces pages présentent un aperçu des modifications apportées aux API dans Qt 6.12 :
Problèmes connus
Pour plus d'informations sur les problèmes connus dans Qt 6.12, consultez le wiki Qt.
© 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.