Qt Protobuf Well-Known Types C++ Classes
Das Modul Qt Protobuf Well-Known Types bietet Unterstützung für einige der Typen, die im Well-Known Types Paket enthalten sind. Mehr...
Dieses Modul wurde in Qt 6.6 eingeführt.
Klassen
Eine Hilfsklasse zur Vereinfachung der Arbeit mit dem Typ protobuf Any |
Detaillierte Beschreibung
QtProtobufWellKnownTypes enthält die folgenden Protobuf Well-Known Typen: Unterstützte Typen:
- Any (Nachricht)
- Api (Nachricht)
- BoolValue (Meldung)
- BytesValue (Meldung)
- DoubleValue (Meldung)
- Duration (Meldung)
- Empty (Meldung)
- Enum (Meldung)
- EnumValue (Nachricht)
- Feld (Nachricht)
- Feld.Kardinalität (enum)
- Feld.Art (Aufzählung)
- FieldMask (Nachricht)
- FloatValue (Meldung)
- Int32Value (Meldung)
- Int64Value (Meldung)
- ListValue (Meldung)
- Method (Nachricht)
- Mixin (Nachricht)
- NullValue (Aufzählung)
- Option (Meldung)
- SourceContext (Meldung)
- StringValue (Meldung)
- Struct (Meldung)
- Syntax (Aufzählung)
- Timestamp (Meldung)
- Type (Nachricht)
- UInt32Value (Nachricht)
- UInt64Value (Nachricht)
- Wert (Nachricht)
Verwendung der Bibliothek ProtobufWellKnownTypes
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 aufgelisteten Typen zu verwenden, müssen Sie mit der ProtobufWellKnownTypes Bibliothek verlinken, 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 ProtobufWellKnownTypes-Bibliothek bietet keine QML-Unterstützung. Obwohl die Unterstützung in zukünftigen Versionen implementiert wird, können Sie die bekannten Typen von Qt Protobuf mit den folgenden Anweisungen zu QML-kompatiblen Typen erweitern. Empty wird zum Beispiel oft als Ein- 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 von QML aus aufzurufen, deklarieren Sie den Typ google.protobuf.Empty, indem Sie den folgenden Code zu einer Header-Datei .h des Projekts hinzufügen:
#include "google/protobuf/empty.qpb.h"
struct GoogleProtobufAPI
{
Q_GADGET
QML_FOREIGN(google::protobuf::Empty)
QML_STRUCTURED_VALUE
QML_VALUE_TYPE(protobufEmpty)
};Danach können Sie den Wertetyp 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 ebenfalls diese 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.