Sur cette page

Qt Protobuf

Le plugin Qt Protobuf generator génère des classes basées sur Qt à partir de fichiers .proto. Vous pouvez utiliser ces classes pour sérialiser et désérialiser les messages protobuf qui leur sont associés.

Vue d'ensemble

Que sont les tampons de protocole ?

Les tampons de protocole sont un mécanisme de sérialisation de données structurées, compact et facile à utiliser, neutre en termes de langage et de plate-forme, et extensible :

  • L'utilisateur définit la structure des données dans les fichiers .proto.
  • Le compilateur Proto est invoqué au moment de la construction des fichiers .proto pour générer du code dans différents langages de programmation.

Le format fourni convient au trafic réseau ou au stockage de données à long terme.

Quels problèmes les tampons de protocole résolvent-ils ?

Les tampons de protocole fournissent un format de sérialisation pour les paquets de données typés et structurés d'une taille maximale de quelques mégaoctets. Ils permettent d'ajouter de nouvelles informations sans invalider les données existantes ni nécessiter la mise à jour du code. Pour plus d'informations, voir Vue d'ensemble des tampons de protocole.

Avantages de l'utilisation Qt Protobuf

Vous pouvez utiliser un mécanisme de tampons de protocole dans n'importe quel projet basé sur Qt :

  • sans avoir à appeler explicitement un compilateur de tampons de protocole
  • Sans avoir à intégrer manuellement le code généré dans l'arborescence du projet.
  • Pour accéder à l'API de sérialisation et de désérialisation.
  • Pour un mécanisme de propriétés intégré pour les messages protobuf générés.
  • Pour la prise en charge intégrée du client gRPC, voir le moduleQt GRPC .
  • Pour la prise en charge intégrée des types QML pour les messages protobuf générés.
  • Pour l'utilisation de Qt Core et Qt GUI dans le cadre du schéma *.proto.

Utilisation du module

Les tampons de protocole de Google fournissent un générateur appelé protoc qui prend en charge les extensions. L 'outil qtprotobufgen est une extension pour protoc et nécessite que vous installiez protoc sur votre système hôte. Pour plus d'informations sur l'installation, voir Installation des protocoles.

API QML

Les types QML du module sont disponibles via les options QML et QML_URI de la macro qt_add_protobuf. Le nom d'importation est égal au nom du paquetage .proto ou défini par l'option QML_URI dans la macro qt_add_protobuf. Pour utiliser les types, ajoutez l'instruction d'importation suivante à votre fichier .qml :

import my.proto.package.uri

API C++

L'utilisation de l'API C++ d'un module Qt nécessite l'établissement d'un lien avec la bibliothèque du module, soit directement, soit par l'intermédiaire d'autres dépendances. Plusieurs outils de construction disposent d'un support dédié à cet effet, notamment CMake et qmake.

Construction avec CMake

Utilisez la commande find_package() pour localiser le composant de module nécessaire dans le paquetage Qt6:

find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)

Pour plus de détails, voir l'aperçu de la construction avec CMake.

Articles et guides

Références

Exemples

Licences et attributions

Le module Qt Protobuf est disponible sous licence commerciale auprès de The Qt Company. En outre, il est disponible sous des licences de logiciel libre : La licence publique générale amoindrie de GNU, version 3, ou la licence publique générale de GNU, version 2, ou la licence publique générale de GNU, version 3. Voir Qt Licensing pour plus de détails.

En outre, l'outil qtprotobufgen dans Qt 6.11.0 peut contenir des modules tiers sous les licences permissives suivantes :

protobuf, version 21.9

Licence BSD 3 clauses "nouvelle" ou "révisée".

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