Sur cette page

Changements apportés à Qt GUI

Qt 6 est le résultat d'un effort conscient pour rendre le cadre plus efficace et plus facile à utiliser.

Nous essayons de maintenir la compatibilité binaire et source pour toutes les API publiques dans chaque version. Mais certains changements étaient inévitables dans un effort pour faire de Qt un meilleur framework.

Dans cette rubrique, nous résumons ces changements dans Qt GUI, et fournissons des conseils pour les gérer.

Classes du noyau

La classe QBitmap

La construction implicite d'un QBitmap à partir d'un QPixmap n'est plus supportée. Le constructeur et l'opérateur d'affectation ont été rendus explicites et marqués comme obsolètes. Utilisez la nouvelle fonction d'usine statique fromPixmap à la place.

La classe QCursor

La construction implicite d'un QCursor à partir d'un QPixmap n'est plus supportée, le constructeur a été rendu explicite.

La classe QKeyCombination

QKeyCombination est une nouvelle classe permettant de stocker la combinaison d'une clé avec un modificateur optionnel. Elle doit être utilisée pour remplacer la combinaison des valeurs de l'énumération Qt::Key avec un modificateur d'une manière sûre.

Nous recommandons de migrer le code qui utilise actuellement operator+() pour combiner une clé 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 liés. Utilisez operator|(), et modifiez les API qui attendent un int pour attendre un QKeyCombination à la place.

Les API existantes qui attendent un int pour une combinaison de touches peuvent être appelées à l'aide de QKeyCombination::toCombined().

Classes de texte

La classe QFontDatabase

La classe QFontDatabase n'a plus que des fonctions statiques. Le constructeur a été déprécié. Au lieu d'utiliser par exemple

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

utiliser

const QStringList fontFamilies = QFontDatabase::families();

La classe QFont

Les valeurs numériques de l'énumérateur QFont::Weight ont été modifiées pour correspondre aux valeurs de poids OpenType. QFont::setWeight() attend une valeur d'énumération au lieu d'une valeur int, et le code qui appelle le setter avec un entier ne se compilera pas. Pour continuer à utiliser les anciennes valeurs entières, utilisez QFont::setLegacyWeight().

Peinture des classes

Voir le guide de portage de Qt Print Support pour obtenir des informations sur QPagedPaintDevice et d'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 dans le module Qt OpenGL dans le module OpenGL.

Plus de détails peuvent être trouvés dans le guide de portage Qt OpenGL .

Une exception notable est la classe QOpenGLContext, qui réside toujours dans Qt GUI.

En outre, la classe QOpenGLWidget a été déplacée dans un nouveau module, nommé Qt OpenGL Widgets.

La classe QOpenGLContext

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

ANGLE

Sous Windows, ANGLE, un traducteur tiers d'OpenGL ES vers Direct 3D, n'est plus inclus dans Qt 3D. Cela signifie que Qt::AA_UseOpenGLES et la variable d'environnement QT_OPENGL=angle n'ont plus d'effet. Dans les versions dynamiques d'OpenGL, il n'y a pas de retour automatique à ANGLE dans le cas où OpenGL ne parvient pas à s'initialiser. Pour les applications basées sur QWindow ou QWidget qui utilisent OpenGL directement, par exemple via QOpenGLWidget, cela signifie qu'OpenGL est la seule option au moment de l'exécution. Cependant, l'alternative d'utiliser une implémentation purement logicielle d'OpenGL, telle que Mesa llvmpipe qui est livré avec les paquets Qt pré-construits, est toujours disponible. Pour les applications 3D 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'API graphiques autres qu'OpenGL.

Intégration du presse-papiers natif

Qt 5 a fourni des interfaces pour l'intégration de formats de presse-papiers spécifiques à une plate-forme ou personnalisés dans Qt par le biais de QMacPasteboardMime dans QtMacExtras, et QWindowsMime de l'API QPA de Windows. Depuis Qt 6.6, la fonctionnalité équivalente est fournie par les classes QUtiMimeConverter pour macOS, et le QWindowsMimeConverter pour Windows.

Le portage de QWindowsMime vers QWindowsMimeConverter ne nécessite pratiquement aucun changement, 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 le format natif du presse-papiers sur macOS, alors que la plateforme utilise désormais Uniform Type Identifiers, c'est-à-dire UTIs, que Qt Adaptation a adapté pour les noms de fonctions et de paramètres.

Les fonctions mimeFor et flavorFor sont remplacées par les implémentations mimeForUti et utiForMime, respectivement. Celles-ci devraient renvoyer le nom du type de mime ou UTI vers lequel le convertisseur peut convertir le format d'entrée, de sorte qu'un portage implique généralement de renommer les surcharges existantes. Les fonctions convertToMime, convertFromMime, et count dans QUtiMimeConverter sont identiques à leurs versions QMacPasteboardMime.

Les fonctions canConvert, converterName ne sont plus nécessaires, elles sont impliquées par l'implémentation des fonctions ci-dessus, donc les surcharges de ces fonctions peuvent être supprimées.

Comme pour les fonctions QWindowsMimeConverter, l'enregistrement se fait 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.