Qt Protobuf Well-Known Types C++ Classes
Le module « Well-Known Types » d'Qt Protobuf prend en charge certains des types disponibles dans le paquet « Well-Known Types ». En savoir plus...
Ce module a été introduit dans Qt 6.6.
Classes
Une classe d'aide permettant de simplifier l'utilisation du type protobuf Any |
Description détaillée
QtProtobufWellKnownTypes contient les types Protobuf « Well-Known » suivants : Types pris en charge :
- Any (message)
- Api (message)
- BoolValue (message)
- BytesValue (message)
- DoubleValue (message)
- Duration (message)
- Empty (message)
- Enum (message)
- EnumValue (message)
- Champ (message)
- Champ.Cardinalité (énumération)
- Champ.Type (énumération)
- Masque de champ (message)
- FloatValue (message)
- Int32Value (message)
- Int64Value (message)
- ListValue (message)
- Méthode (message)
- Mixin (message)
- NullValue (énumération)
- Option (message)
- SourceContext (message)
- StringValue (message)
- Struct (message)
- Syntaxe (énumération)
- Horodatage (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 .proto Google correspondant dans votre interface :
syntax = "proto3";
package somepackage;
import "google/protobuf/any.proto";
message Message {
google.protobuf.Any payload = 1;
}Pour utiliser les types répertoriés, vous devez lier votre projet à la bibliothèque ProtobufWellKnownTypes en ajoutant la ligne suivante à votre fichier CMakeLists.txt:
target_link_libraries(YourTargetName PRIVATE Qt::ProtobufWellKnownTypes)Ajout de la prise en charge de QML pour ProtobufWellKnownTypes
La bibliothèque ProtobufWellKnownTypes ne fournit pas de prise en charge de QML. Bien que cette prise en charge soit prévue 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 ci-dessous. Par exemple, le type 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 depuis QML, déclarez le type « google.protobuf.Empty » en ajoutant le code suivant à un fichier d’en-tête ou à un fi .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)
};Vous pouvez ensuite 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 d'utiliser cette syntaxe :
Component.onCompleted: {
grpcClient.emptyMethod({}, messageCallback, errorCallback, grpcCallOptions);
}Voir également 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.