Auf dieser Seite

Qt Protobuf Well-Known Types C++ Classes

Das Modul „ Qt Protobuf: Well-Known Types“ bietet Unterstützung für einige der im Paket „Well-Known Types“ verfügbaren Typen. Mehr dazu...

Dieses Modul wurde in Qt 6.6 eingeführt.

Klassen

QtProtobuf::Any

Eine Hilfsklasse zur Vereinfachung der Arbeit mit dem Protobuf-Typ „Any“

Ausführliche Beschreibung

QtProtobufWellKnownTypes enthält die folgenden Protobuf-Well-Known-Typen: Unterstützte Typen:

Verwendung der ProtobufWellKnownTypes-Bibliothek

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 aufgeführten Typen zu verwenden, müssen Sie die Bibliothek „ ProtobufWellKnownTypes “ einbinden, 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 Bibliothek „ProtobufWellKnownTypes“ bietet keine QML-Unterstützung. Diese Unterstützung wird zwar in zukünftigen Versionen implementiert, vorerst können Sie die bekannten Typen von „ Qt Protobuf “ jedoch mithilfe der folgenden Anweisungen zu QML-kompatiblen Typen erweitern. Beispielsweise wird „Empty“ häufig als Eingabe 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 “ aus QML aufzurufen, deklarieren Sie den Typ „ google.protobuf.Empty “, indem Sie den folgenden Code in eine Header-Datei ( .h ) des Projekts einfügen:

#include "google/protobuf/empty.qpb.h"

struct GoogleProtobufAPI
{
    Q_GADGET
    QML_FOREIGN(google::protobuf::Empty)
    QML_STRUCTURED_VALUE
    QML_VALUE_TYPE(protobufEmpty)
};

Anschließend können Sie den Werttyp „ 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 außerdem folgende 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.