Sur cette page

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

QtProtobuf::Any

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 :

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.