Sur cette page

Qt Jenny: Générateur de code Java

Qt Jenny traduit les API Java en wrappers Qt C++, ce qui permet aux programmes Qt C++ d'invoquer des fonctionnalités Java. Ceci est particulièrement utile sur une plateforme avec des API système Java, comme Android.

Fonctionnalités

Qt JennyFonctionnalités de Qt C++ :

  • Génération de wrappers pour n'importe quelle classe Java.
  • Génération de modèles avec des modèles personnalisables qui peuvent être modifiés pour personnaliser la sortie C++.
  • Génération configurable qui permet de contrôler l'espace de noms des wrappers générés.
  • Prise en charge de la génération de code qui utilise QJniObject dans le code généré, ce qui permet d'utiliser toutes les commodités offertes par QJniObject.

Exemples

Voir QtJenny Demo pour un exemple d'utilisation de Qt Jenny.

Comment fonctionne Qt Jenny

Qt Jenny traduit les API Java en wrappers Qt C++ en utilisant les éléments suivants :

  • Le code Kotlin qui importe les classes à intégrer.
  • Des annotations dans ce code qui indiquent les classes à intégrer.
  • Un générateur de code qui lit les annotations et génère le code du wrapper.

Avec ces éléments de base, le projet Qt est alors structuré de manière à ce qu'il y ait un projet Gradle séparé pour générer le code que le projet CMake Qt utilise. Le projet CMake déclenche la génération du code au moment de la configuration du projet (en d'autres termes, lorsque vous exécutez CMake). Pour une application qui invoque des méthodes mais n'a pas besoin d'implémenter de callbacks, un seul projet de génération de code est suffisant. Pour une application qui utilise à la fois des invocations de méthodes et des rappels d'interfaces, deux projets de génération sont nécessaires : un pour les mandataires de méthodes et un pour la hiérarchie des rappels. Pour une application qui doit étendre des classes, trois projets de génération sont nécessaires : un pour les mandataires de méthodes, un pour le code de collage Java et un pour la hiérarchie des rappels.

Le code d'exemple de QtJenny Demo utilise trois projets de génération, puisqu'il utilise l'extension de classe.

Comment cela fonctionne-t-il ?

Référence

Licences et attributions

Qt Jenny contient potentiellement des modules tiers sous les licences permissives suivantes :

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