Sur cette page

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

QtProtobuf::Any

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 :

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.