Sur cette page

Modifications apportées à Qt GUI

Qt 6 résultent d'un effort délibéré visant à rendre le framework plus efficace et plus facile à utiliser.

Nous nous efforçons de maintenir la compatibilité binaire et source pour toutes les API publiques à chaque version. Cependant, certaines modifications étaient inévitables pour améliorer le framework Qt.

Dans cette rubrique, nous résumons ces modifications dans « Qt GUI » et fournissons des conseils pour les prendre en compte.

Classes du noyau

La classe QBitmap

La construction implicite d’un ` QBitmap ` à partir d’un ` QPixmap ` n’est plus prise en charge. Le constructeur et l’opérateur d’affectation ont été rendus explicites et marqués comme obsolètes. Utilisez plutôt la nouvelle fonction d’usine statique ` fromPixmap `.

La classe QCursor

La construction implicite d’un ` QCursor ` à partir d’un ` QPixmap ` n’est plus prise en charge ; le constructeur a été rendu explicite.

La classe QKeyCombination

QKeyCombination est une nouvelle classe permettant de stocker une combinaison d’une touche et d’un modificateur facultatif. Elle doit être utilisée pour remplacer la combinaison de valeurs issues de l’énumération ` Qt::Key ` avec un modificateur, de manière sûre du point de vue des types.

Nous recommandons de migrer le code qui utilise actuellement l’opérateur +() pour combiner une touche et des modificateurs, car les futures normes C++ sont susceptibles de déclarer illégales les opérations arithmétiques entre des types d’énumération non apparentés. Utilisez l’opérateur |() et remplacez les API qui attendent une valeur de type ` int ` par une valeur de type ` QKeyCombination `.

Les API existantes qui attendent une ` int ` pour une combinaison de clés peuvent être appelées à l’aide de ` QKeyCombination::toCombined()`.

Classes de texte

La classe QFontDatabase

La classe QFontDatabase ne comporte désormais plus que des fonctions membres statiques. Le constructeur a été déprécié. Au lieu d’écrire par exemple

const QStringList fontFamilies = QFontDatabase().families();

utilisez

const QStringList fontFamilies = QFontDatabase::families();

La classe QFont

Les valeurs numériques de l'énumérateur ` QFont::Weight ` ont été modifiées pour être conformes aux valeurs de graisse OpenType. La méthode ` QFont::setWeight()` attend désormais une valeur d'énumération au lieu d'un entier ` int`, et tout code appelant le setter avec un entier échouera à la compilation. Pour continuer à utiliser les anciennes valeurs entières, utilisez `QFont::setLegacyWeight()`.

Classes de dessin

Consultez le guide de portage pour Qt Print Support pour plus d’informations sur ` QPagedPaintDevice ` et les autres classes liées à l’impression.

Classes utilitaires

QIntValidator et QDoubleValidator

La méthode setRange() n’est plus marquée comme virtuelle.

Classes OpenGL

Avec l’introduction de Qt RHI comme base de rendu dans Qt, la plupart des classes préfixées par QOpenGL ont été déplacées vers le Qt OpenGL module.

Vous trouverez plus de détails dans le guide de portage d’ Qt OpenGL .

Une exception notable est la classe QOpenGLContext, qui se trouve toujours dans Qt GUI.

De plus, la classe QOpenGLWidget a été déplacée vers un nouveau module, nommé Qt OpenGL Widgets.

La classe QOpenGLContext

La fonction QOpenGLContext::versionFunctions() est remplacée par QOpenGLVersionFunctionsFactory::get(). QOpenGLVersionFunctionsFactory est désormais une classe publique, faisant partie du Qt OpenGL module.

ANGLE

Sous Windows, ANGLE, un convertisseur tiers d’OpenGL ES vers Direct 3D, n’est plus inclus dans Qt. Cela signifie que Qt::AA_UseOpenGLES et la variable d’environnement QT_OPENGL=angle n’ont plus aucun effet. Dans les versions dynamiques d’OpenGL, il n’y a pas de repli automatique vers ANGLE en cas d’échec de l’initialisation d’OpenGL proprement dit. Pour les applications basées sur QWindow ou QWidget utilisant directement OpenGL, par exemple via QOpenGLWidget, cela signifie qu’OpenGL proprement dit est la seule option disponible au moment de l’exécution. Cependant, l’alternative consistant à utiliser une implémentation purement logicielle d’OpenGL, telle que Mesa llvmpipe fournie avec les paquets Qt précompilés, reste disponible. Pour les applications 3D fonctionnant sous Qt Quick et Qt Quick, Qt 6 introduit la prise en charge de Direct 3D 11, Vulkan et Metal, en plus d’OpenGL. Sous Windows, le choix par défaut est Direct 3D ; la suppression d’ANGLE est donc atténuée par la prise en charge d’autres API graphiques que OpenGL.

Intégration native du presse-papiers

Qt 5 fournissait des interfaces permettant d’intégrer des formats de presse-papiers spécifiques à une plateforme ou personnalisés dans Qt via QMacPasteboardMime dans QtMacExtras et QWindowsMime à partir de l’API QPA de Windows. Depuis Qt 6.6, cette fonctionnalité est assurée par les classes QUtiMimeConverter pour macOS et QWindowsMimeConverter pour Windows.

Le portage de QWindowsMime vers QWindowsMimeConverter ne nécessite pratiquement aucune modification, car l’interface virtuelle est identique. Cependant, dans Qt 6, il n’est plus nécessaire d’enregistrer une implémentation de QWindowsMimeConverter; l’instanciation du type enregistre implicitement le convertisseur.

Le portage d’un QMacPasteboardMime vers QUtiMimeConverter nécessite de renommer certaines fonctions virtuelles. Notez que l’API QMacPasteboardMime utilisait le terme obsolète « flavor » pour désigner le format natif du presse-papiers sous macOS, alors que la plateforme utilise désormais « Uniform Type Identifiers », c’est-à-dire des UTIs, que Qt a adapté pour les noms de fonctions et de paramètres.

Les fonctions ` mimeFor ` et ` flavorFor ` sont remplacées respectivement par les implémentations ` mimeForUti ` et ` utiForMime `. Celles-ci doivent renvoyer le nom du type MIME ou de l'UTI vers lequel le convertisseur peut convertir le format d'entrée ; par conséquent, la migration se résume généralement à renommer les redéfinitions existantes. Les fonctions ` convertToMime`, ` convertFromMime` et ` count ` de ` QUtiMimeConverter ` sont identiques à leurs versions `QMacPasteboardMime`.

Les fonctions canConvert et converterName ne sont plus nécessaires ; elles sont implicites dans l’implémentation des fonctions ci-dessus. Les redéfinitions de ces fonctions peuvent donc être supprimées.

Comme pour ` QWindowsMimeConverter`, l'enregistrement s'effectue en instanciant le type.

© 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.