Qt Protobuf
Das Qt Protobuf Generator Plugin generiert Qt-basierte Klassen aus .proto
Dateien. Sie können die Klassen verwenden, um die zugehörigen Protobuf-Nachrichten zu serialisieren und zu deserialisieren.
Überblick
Was sind Protokollpuffer?
Protokollpuffer sind ein sprach- und plattformneutraler 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 zur Erstellungszeit auf
.proto
Dateien aufgerufen, um Code in verschiedenen Programmiersprachen zu erzeugen.
Das bereitgestellte Format eignet sich für den Netzwerkverkehr oder die langfristige Datenspeicherung.
Welche Probleme werden mit Protokollpuffern gelöst?
Protokollpuffer bieten ein Serialisierungsformat für typisierte und strukturierte Datenpakete bis zu einer Größe von einigen Megabytes. Sie ermöglichen die Erweiterung mit neuen Informationen, ohne dass bestehende Daten ungültig werden oder der Code aktualisiert werden muss. Weitere Informationen finden Sie unter Protokollpuffer - Überblick.
Vorteile der Verwendung Qt Protobuf
Sie können einen Protokollpuffer-Mechanismus in jedem Qt-basierten Projekt verwenden:
- Ohne die Notwendigkeit, einen Protokollpuffer-Compiler explizit aufzurufen.
- Ohne den generierten Code manuell in den Projektbaum zu integrieren.
- Für den Zugriff auf die Serialisierungs- und Deserialisierungs-API.
- Für einen integrierten Eigenschaftsmechanismus für generierte Protobuf-Nachrichten.
- Für integrierte gRPC-Client-Unterstützung, siehe Qt GRPC Modul.
- Für integrierte QML-Types-Unterstützung für generierte Protobuf-Nachrichten.
- Für die Verwendung von aktivierten Qt Core und Qt GUI Typen als Teil des *.proto Schemas.
Verwendung des Moduls
Google protocol buffers bietet einen Generator namens protoc
, der Erweiterungen unterstützt. Das qtprotobufgen Tool ist eine Erweiterung für protoc
und setzt voraus, dass Sie protoc
auf Ihrem Hostsystem installieren. Weitere Informationen über die 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 ist gleich dem .proto
-Paketnamen oder wird durch die Option QML_URI im Makro qt_add_protobuf definiert. Um die Typen zu verwenden, fügen Sie die folgende Import-Anweisung zu Ihrer .qml-Datei hinzu:
import my.proto.package.uri
C++ API
Die Verwendung der C++-API eines Qt-Moduls erfordert eine 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.
Bauen 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 Details finden Sie in der Übersicht Bauen mit CMake.
Artikel und Anleitungen
- CMake-Befehle in Qt6 Protobuf
- Protobuf Qt Core Types
- Protobuf Qt GUI Types
- Qt Protobuf Well-Known types
Referenzen
Beispiele
Lizenzen und Namensnennung
Das Modul Qt Protobuf ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus ist es unter freien Softwarelizenzen erhältlich: Die GNU Lesser General Public License, Version 3, oder die GNU General Public License, Version 2, oder die GNU General Public License, Version 3. Siehe Qt Licensing für weitere Details.
Darüber hinaus kann das Tool qtprotobufgen
in Qt 6.8.2 Module von Drittanbietern unter den folgenden zulässigen Lizenzen enthalten:
BSD 3-Klausel "Neue" oder "Revidierte" Lizenz |
© 2025 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.