Qt Protobuf
Das Plugin „ Qt Protobuf “ generiert Qt-basierte Klassen aus „ .proto “-Dateien. Mit diesen Klassen können Sie die zugehörigen Protobuf-Nachrichten serialisieren und deserialisieren.
Übersicht
Was sind Protocol Buffers?
Protocol Buffers sind ein sprach- und plattformunabhängiger sowie erweiterbarer Mechanismus zur Serialisierung strukturierter Daten, der kompakt und einfach zu verwenden ist:
- Ein Benutzer definiert die Struktur der Daten in „
.proto“-Dateien. - Der Proto-Compiler wird bei der Erstellung auf „
.proto“-Dateien angewendet, um Code in verschiedenen Programmiersprachen zu generieren.
Das bereitgestellte Format eignet sich für den Netzwerkverkehr oder die langfristige Datenspeicherung.
Welche Probleme lösen Protocol Buffers?
Protocol Buffers bieten ein Serialisierungsformat für typisierte und strukturierte Datenpakete mit einer Größe von bis zu einigen Megabyte. Es ermöglicht die Erweiterung um neue Informationen, ohne dass bestehende Daten ungültig werden oder der Code aktualisiert werden muss. Weitere Informationen finden Sie unter „Protocol Buffers – Überblick“.
Vorteile der Verwendung Qt Protobuf
Sie können den Protocol-Buffers-Mechanismus in jedem Qt-basierten Projekt nutzen:
- Ohne dass ein Protocol-Buffers-Compiler explizit aufgerufen werden muss.
- Ohne manuelle Integration des generierten Codes in den Projektbaum.
- Um auf die API für die Serialisierung und Deserialisierung zuzugreifen.
- Für einen integrierten Eigenschaftenmechanismus für generierte Protobuf-Nachrichten.
- Für integrierte gRPC-Client-Unterstützung siehe das Modul „Qt GRPC “.
- Für integrierte Unterstützung von QML-Typen für generierte Protobuf-Nachrichten.
- Zur Verwendung von aktivierten Qt Core und Qt GUI Typen als Teil des *.proto-Schemas.
Verwendung des Moduls
Die Google Protocol Buffers stellen einen Generator namens „ protoc “ bereit, der Erweiterungen unterstützt. Das Tool „qtprotobufgen“ ist eine Erweiterung für „ protoc “ und setzt voraus, dass Sie „ protoc “ auf Ihrem Host-System installieren. Weitere Informationen zur Installation finden Sie unter „Protoc-Installation“.
- Beispiel für die Installation unter Linux mit apt:
apt install -y protobuf-compiler protoc --version # Ensure compiler version is 3+ - Beispiel für die Installation unter Windows mit vcpkg
QML-API
Die QML-Typen des Moduls sind über die Optionen „QML“ und „QML_URI“ im Makro „qt_add_protobuf()“ verfügbar. Der Importname entspricht dem Paketnamen „ .proto “ oder wird durch die Option „QML_URI“ im Makro „qt_add_protobuf()“ definiert. Um die Typen zu verwenden, fügen Sie die folgende Importanweisung in Ihre .qml-Datei ein:
import my.proto.package.uriC++-API
Die Verwendung der C++-API eines Qt-Moduls erfordert die Verknüpfung mit der Modulbibliothek, entweder direkt oder über andere Abhängigkeiten. Mehrere Build-Tools bieten hierfür spezielle Unterstützung, darunter CMake und qmake.
Erstellen mit CMake
Verwenden Sie den Befehl „ find_package() “, um die benötigte Modulkomponente im Paket „ Qt6 “ zu finden:
find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)Weitere Informationen finden Sie in der Übersicht „Erstellen mit CMake “.
Artikel und Anleitungen
- CMake-Befehle in Qt6 Protobuf
- Protobuf Qt Core Types
- Protobuf Qt GUI Types
- Qt Protobuf Well-Known types
- Qt Protobuf Veränderbare Getter
Referenzen
Beispiele
Lizenzen und Urheberangaben
Das Modul „ Qt Protobuf “ ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus ist es unter freien Softwarelizenzen verfügbar: der GNU Lesser General Public License, Version 3, der GNU General Public License, Version 2, oder der GNU General Public License, Version 3. Weitere Informationen finden Sie unter „Qt-Lizenzierung “.
Darüber hinaus kann das Tool „ qtprotobufgen “ in Qt 6.12.0 Module von Drittanbietern enthalten, die unter den folgenden freizügigen Lizenzen stehen:
BSD-3-Klausel-„New“- oder „Revised“-Lizenz |
© 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.