Intégration de plateformes
Le principal atout de Qt, en tant que boîte à outils multiplateforme pour le développement d'applications, réside dans le fait qu'il évite d'avoir à dupliquer le code de l'application pour chaque plateforme cible.
Bien que Qt résolve bon nombre des tâches courantes liées à l'écriture d'une application, il existe toujours des cas particuliers que Qt ne peut pas couvrir, ou pour lesquels il est plus judicieux de développer une fonctionnalité en s'appuyant sur les API spécifiques à la plateforme ou sur une autre boîte à outils.
Pour prendre en charge ces cas d’utilisation, tout en permettant à Qt de gérer l’essentiel de la logique de l’application, Qt fournit un large éventail d’API d’intégration de plateformes, allant de simples conversions de types à des interfaces natives spécifiques à chaque plateforme.
Conversions de types
De nombreux types de données de base de Qt, tels que ` QString`, ` QPoint` ou ` QImage`, permettent des conversions vers et depuis les types natifs équivalents.
Par exemple, pour obtenir le nom d'utilisateur de l'utilisateur actuel sur les plateformes Apple :
NSProcessInfo *processInfo = NSProcessInfo.processInfo;
QString userName = QString::fromNSString(processInfo.userName)Pour une liste complète de toutes les conversions de types, consultez la présentation des conversions de types.
Intégration avec d’autres boîtes à outils d’interface utilisateur
Qt fournit un ensemble complet de composants et de contrôles d'interface utilisateur multiplateformes qui couvrent la grande majorité des besoins en matière de développement d’applications. Cependant, il existe des situations où l’intégration de Qt à d’autres kits d’interface utilisateur s’avère nécessaire ou avantageuse.
Un cas de figure consiste à intégrer des interfaces utilisateur Qt dans des applications développées avec d’autres bibliothèques, par exemple lors de la mise en œuvre de plugins pour une application existante, ou lors de l’introduction progressive de Qt dans une base de code existante.
Un autre cas de figure consiste à héberger des éléments d’interface utilisateur natifs ou tiers dans une application Qt, par exemple pour accéder à des contrôles spécialisés que Qt ne fournit pas.
Consultez la section « Combiner Qt avec d’autres kits d’interface utilisateur » pour une analyse approfondie de la manière dont Qt prend en charge ces deux cas d’utilisation.
Gestion des événements
La plupart des cas d’utilisation de la gestion des événements dans Qt sont suffisamment couverts par la diffusion d’événements multiplateforme, via ` QWindow::event()` et ses méthodes associées, ou via ` QObject::installEventFilter()`.
Lorsque cela ne suffit pas, Qt permet d’accéder à la diffusion des événements natifs. Un filtre d’événements global recevant tous les événements natifs peut être mis en place à l’aide de ` QCoreApplication::installNativeEventFilter()`, tandis que les événements natifs propres à chaque fenêtre peuvent être gérés via ` QWindow::nativeEvent()`.
Remarque : interférer avec le flux d’événements natifs peut mettre Qt dans un état incohérent. Ces API doivent principalement être utilisées pour compléter la gestion des événements existante de Qt, par exemple pour les événements que Qt ne gère pas encore.
Interfaces natives
Les fonctionnalités spécifiques à la plateforme qui ne sont pas couvertes par les API mentionnées ci-dessus sont gérées par le mécanisme d’interface native plus générique de Qt. Ces interfaces permettent d’accéder aux API natives ou spécifiques à la plateforme des classes qu’elles étendent.
Ces interfaces se trouvent dans l’espace de noms QNativeInterface et couvrent des cas d’utilisation tels que l’accès aux descripteurs natifs sous-jacents, l’adoption de descripteurs natifs existants ou la mise à disposition d’API spécifiques à la plateforme.
Par exemple, pour accéder au `NSOpenGLContext` sous-jacent d’un ` QOpenGLContext ` sous macOS, via l’interface native ` QNativeInterface::QCocoaGLContext ` :
using namespace QNativeInterface;
if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>())
[cocoaGLContext->nativeContext() makeCurrentContext];Pour obtenir la liste complète de toutes les interfaces natives, consultez la présentation des interfaces natives.
Avertissement : il n’y a aucune garantie de compatibilité au niveau du code source ou des binaires pour les API d’interfaces natives, ce qui signifie qu’une application utilisant ces interfaces n’est garantie de fonctionner qu’avec la version de Qt pour laquelle elle a été développée.
Prise en charge des plateformes
Outre les API destinées aux développeurs d’applications, Qt s’interface également avec la plateforme pour fournir les implémentations sous-jacentes des composants de base multiplateformes de Qt.
On peut citer par exemple les abstractions de distributeur d’événements dans Qt Core et les abstractions du matériel de rendu dans RHI.
La principale couche d’abstraction ici est la Qt Platform Abstraction, ou QPA en abrégé, qui gère l’intégration au système de fenêtrage et les cas d’utilisation associés.
© 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.