Qt Protobuf Well-Known Types C++ Classes
Le module Qt Protobuf Well-Known Types fournit un support pour certains des types disponibles dans le paquet Well-Known Types. Plus d'informations...
Ce module a été introduit dans Qt 6.6.
Classes
Une classe d'aide pour simplifier le travail avec le type protobuf Any |
Description détaillée
QtProtobufWellKnownTypes contient les types Protobuf connus suivants : Types pris en charge :
- Any (message)
- Api (message)
- BoolValue (message)
- BytesValue (message)
- DoubleValue (message)
- Duration (message)
- Empty (message)
- Enum (message)
- EnumValue (message)
- Field (message)
- Field.Cardinality (enum)
- Field.Kind (enum)
- FieldMask (message)
- FloatValue (message)
- Int32Value (message)
- Int64Value (message)
- ListValue (message)
- Method (message)
- Mixin (message)
- NullValue (enum)
- Option (message)
- SourceContext (message)
- StringValue (message)
- Struct (message)
- Syntaxe (enum)
- Timestamp (message)
- Type (message)
- UInt32Value (message)
- UInt64Value (message)
- Valeur (message)
Utilisation de la bibliothèque ProtobufWellKnownTypes
Pour utiliser des types bien connus dans votre projet, vous pouvez inclure le fichier google .proto correspondant dans votre interface :
syntax = "proto3";
package somepackage;
import "google/protobuf/any.proto";
message Message {
google.protobuf.Any payload = 1;
}Pour utiliser les types listés, vous devez créer un lien avec la bibliothèque ProtobufWellKnownTypes en ajoutant la ligne suivante à votre fichier CMakeLists.txt:
target_link_libraries(YourTargetName PRIVATE Qt::ProtobufWellKnownTypes)
Ajout du support QML pour les ProtobufWellKnownTypes
La bibliothèque ProtobufWellKnownTypes ne fournit pas le support QML. Même si ce support sera implémenté dans les prochaines versions, vous pouvez pour l'instant étendre les types bien connus de Qt Protobuf en types compatibles avec QML en suivant les instructions suivantes. Par exemple, Empty est souvent utilisé comme entrée ou sortie pour les méthodes RPC. Voir ci-dessous :
syntax = "proto3";
package qtgrpc.examples;
import "google/protobuf/empty.proto";
service ExampleService {
rpc emptyMethod(google.protobuf.Empty) returns (google.protobuf.Empty) {}
}Pour appeler emptyMethod à partir de QML, déclarez le type google.protobuf.Empty en ajoutant le code suivant à un fichier d'en-tête .h du projet :
#include "google/protobuf/empty.qpb.h"
struct GoogleProtobufAPI
{
Q_GADGET
QML_FOREIGN(google::protobuf::Empty)
QML_STRUCTURED_VALUE
QML_VALUE_TYPE(protobufEmpty)
};Ensuite, vous pouvez utiliser le type de valeur protobufEmpty dans QML. Voir l'exemple ci-dessous :
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);
}
}
}La macro QML_STRUCTURED_VALUE permet également cette syntaxe :
Component.onCompleted: {
grpcClient.emptyMethod({}, messageCallback, errorCallback, grpcCallOptions);
}Voir aussi QML_VALUE_TYPE et 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.