Sur cette page

Qt Protobuf

Le plugin générateur « Qt Protobuf » 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.

Présentation

Que sont les Protocol Buffers ?

Les Protocol Buffers constituent un mécanisme de sérialisation de données structurées, indépendant du langage et de la plateforme, extensible, compact et facile à utiliser :

  • L’utilisateur définit la structure des données dans des fichiers « .proto ».
  • Le compilateur Proto est appelé au moment de la compilation sur les fichiers « .proto » afin de générer du code dans divers langages de programmation.

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

Quels problèmes les Protocol Buffers permettent-ils de résoudre ?

Les Protocol Buffers fournissent un format de sérialisation pour les paquets de données typées et structurées d’une taille pouvant atteindre quelques mégaoctets. Ils permettent d’ajouter de nouvelles informations sans invalider les données existantes ni nécessiter de mise à jour du code. Pour plus d’informations, consultez la présentation des Protocol Buffers.

Avantages de l'utilisation Qt Protobuf

Vous pouvez utiliser le mécanisme des Protocol Buffers dans n’importe quel projet basé sur Qt :

  • Sans avoir à appeler explicitement un compilateur de Protocol Buffers.
  • 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 bénéficier d’un mécanisme de propriétés intégré pour les messages Protobuf générés.
  • Pour une prise en charge intégrée du client gRPC, consultez le moduleQt GRPC .
  • Pour la prise en charge intégrée des types QML pour les messages Protobuf générés.
  • Pour utiliser les Qt Core et Qt GUI types activés dans le cadre du schéma *.proto.

Utilisation du module

Les Protocol Buffers 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 l’installation de protoc sur votre système hôte. Pour plus d’informations sur l’installation, consultez la section Installation de Protoc.

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 correspond au nom du paquet .proto ou est défini par l'option QML_URI de la macro qt_add_protobuf(). Pour utiliser ces types, ajoutez la déclaration 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 une liaison avec la bibliothèque du module, soit directement, soit via d'autres dépendances. Plusieurs outils de compilation prennent cela en charge, notamment CMake et qmake.

Compilation avec CMake

Utilisez la commande « find_package() » pour localiser le composant de module requis dans le paquet Qt6:

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

Pour plus de détails, consultez la présentation « Compilation avec CMake ».

Articles et guides

Références

Exemples

Licences et mentions d’attribution

Le module « Qt Protobuf » est disponible sous des licences commerciales auprès de The Qt Company. Il est également disponible sous des licences de logiciel libre : la Licence publique générale réduite GNU, version 3, la Licence publique générale GNU, version 2, ou la Licence publique générale GNU, version 3. Pour plus de détails, consultez la page Licences Qt.

Par ailleurs, l’outil « qtprotobufgen » de Qt 6.12.0 peut contenir des modules tiers sous les licences permissives suivantes :

protobuf, version 21.9

Licence BSD à 3 clauses « New » ou « Revised »

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