Qt Protobuf Well-Known Types C++ Classes
Das Modul „ Qt Protobuf: Well-Known Types“ bietet Unterstützung für einige der im Paket „Well-Known Types“ verfügbaren Typen. Mehr dazu...
Dieses Modul wurde in Qt 6.6 eingeführt.
Klassen
Eine Hilfsklasse zur Vereinfachung der Arbeit mit dem Protobuf-Typ „Any“ |
Ausführliche Beschreibung
QtProtobufWellKnownTypes enthält die folgenden Protobuf-Well-Known-Typen: Unterstützte Typen:
- Any (Nachricht)
- Api (Nachricht)
- BoolValue (Nachricht)
- BytesValue (Nachricht)
- DoubleValue (Nachricht)
- Dauer (Nachricht)
- Leer (Nachricht)
- Enum (Nachricht)
- EnumValue (Nachricht)
- Feld (Nachricht)
- Feld.Kardinalität (Enum)
- Feld.Typ (Enum)
- Feldmaske (Nachricht)
- FloatValue (Nachricht)
- Int32-Wert (Nachricht)
- Int64-Wert (Nachricht)
- ListValue (Nachricht)
- Methode (Nachricht)
- Mixin (Nachricht)
- NullValue (Enumeration)
- Option (Nachricht)
- SourceContext (Nachricht)
- StringValue (Nachricht)
- Struct (Nachricht)
- Syntax (Enum)
- Zeitstempel (Nachricht)
- Typ (Nachricht)
- UInt32Value (Nachricht)
- UInt64Value (Nachricht)
- Wert (Nachricht)
Verwendung der ProtobufWellKnownTypes-Bibliothek
Um bekannte Typen in Ihrem Projekt zu verwenden, können Sie die entsprechende Google-.proto-Datei in Ihre Schnittstelle einbinden:
syntax = "proto3";
package somepackage;
import "google/protobuf/any.proto";
message Message {
google.protobuf.Any payload = 1;
}Um die aufgeführten Typen zu verwenden, müssen Sie die Bibliothek „ ProtobufWellKnownTypes “ einbinden, indem Sie die folgende Zeile in Ihre „CMakeLists.txt“-Datei einfügen:
target_link_libraries(YourTargetName PRIVATE Qt::ProtobufWellKnownTypes)Hinzufügen von QML-Unterstützung für „ProtobufWellKnownTypes“
Die Bibliothek „ProtobufWellKnownTypes“ bietet keine QML-Unterstützung. Diese Unterstützung wird zwar in zukünftigen Versionen implementiert, vorerst können Sie die bekannten Typen von „ Qt Protobuf “ jedoch mithilfe der folgenden Anweisungen zu QML-kompatiblen Typen erweitern. Beispielsweise wird „Empty“ häufig als Eingabe oder Ausgabe für RPC-Methoden verwendet. Siehe unten:
syntax = "proto3";
package qtgrpc.examples;
import "google/protobuf/empty.proto";
service ExampleService {
rpc emptyMethod(google.protobuf.Empty) returns (google.protobuf.Empty) {}
}Um „ emptyMethod “ aus QML aufzurufen, deklarieren Sie den Typ „ google.protobuf.Empty “, indem Sie den folgenden Code in eine Header-Datei ( .h ) des Projekts einfügen:
#include "google/protobuf/empty.qpb.h"
struct GoogleProtobufAPI
{
Q_GADGET
QML_FOREIGN(google::protobuf::Empty)
QML_STRUCTURED_VALUE
QML_VALUE_TYPE(protobufEmpty)
};Anschließend können Sie den Werttyp „ protobufEmpty “ in QML verwenden. Siehe das folgende Beispiel:
import qtgrpc.examples
import QtQuick
import QtGrpc
Item {
id: root
property protobufEmpty value: null
ServiceClient {
id: grpcClient
channel: grpcChannel.channel
}
Item {
Component.onCompleted: {
grpcClient.emptyMethod(value, messageCallback, errorCallback, grpcCallOptions);
}
}
}Das Makro „ QML_STRUCTURED_VALUE “ ermöglicht außerdem folgende Syntax:
Component.onCompleted: {
grpcClient.emptyMethod({}, messageCallback, errorCallback, grpcCallOptions);
}Siehe auch „ QML_VALUE_TYPE “ und „ QML_STRUCTURED_VALUE “.
© 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.