Auf dieser Seite

QProtobufMessage Class

Basisklasse für alle Protobuf-Nachrichten. Mehr...

Header: #include <QProtobufMessage>
CMake: find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
Seit: Qt 6.5
Vererbt an:

QtProtobuf::Any

Öffentliche Funktionen

(since 6.8) bool deserialize(QAbstractProtobufSerializer *serializer, QByteArrayView data)
QVariant property(QAnyStringView propertyName) const
(since 6.8) const QtProtobufPrivate::QProtobufPropertyOrdering *propertyOrdering() const
(since 6.8) QByteArray serialize(QAbstractProtobufSerializer *serializer) const
bool setProperty(QAnyStringView propertyName, const QVariant &value)
(since 6.6) bool setProperty(QAnyStringView propertyName, QVariant &&value)
(since 6.7) QList<QByteArray> unknownFieldData(qint32 field) const
(since 6.7) QList<qint32> unknownFieldNumbers() const

Statische öffentliche Mitglieder

QProtobufMessagePointer constructByName(const QString &messageType)

Geschützte Funktionen

QProtobufMessage(QProtobufMessage &&other)
QProtobufMessagePointer
(since 6.11) To qprotobufmessage_cast(QProtobufMessage *from)
(since 6.11) To qprotobufmessage_cast(const QProtobufMessage *from)

Ausführliche Beschreibung

Bietet Zugriff auf die Eigenschaften einer Nachricht mithilfe von ` setProperty()` und ` property()`, unabhängig davon, um welche Art von Nachricht es sich handelt.

Dokumentation der Mitgliedsfunktionen

[constexpr noexcept protected default] QProtobufMessage::QProtobufMessage(QProtobufMessage &&other)

Erstellt eine Instanz von ` QProtobufMessage` mithilfe von `Move`.

[static] QProtobufMessagePointer QProtobufMessage::constructByName(const QString &messageType)

Erstellt „ QProtobufMessage “ mithilfe von „ messageType “. Gibt einen Zeiger auf das erstellte „ QProtobufMessage “ zurück.

Diese Funktion versucht, eine Nachricht mit einem Typ zu erstellen, der mit „ messageType “ übereinstimmt. Ist „ messageType “ unbekannt, gibt die Funktion „ nullptr “ zurück. Wird die Nachricht nicht in der Registrierung gefunden, gibt die Funktion „ nullptr “ zurück. Der Aufrufer der Funktion erhält das Eigentumsrecht an der erstellten Nachricht.

[since 6.8] bool QProtobufMessage::deserialize(QAbstractProtobufSerializer *serializer, QByteArrayView data)

Deserialisiert diese Protobuf-Nachricht von einem ` QByteArray ` data unter Verwendung von ` serializer`. Gibt ` true ` zurück, wenn die Deserialisierung erfolgreich war, andernfalls ` false`.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` serialize()`.

QVariant QProtobufMessage::property(QAnyStringView propertyName) const

Rufen Sie den Wert der Eigenschaft „ propertyName “ ab.

Ist der Wert von ` propertyName ` nicht bekannt, ist der zurückgegebene Wert von ` QVariant ` ungültig.

Siehe auch setProperty().

[since 6.8] const QtProtobufPrivate::QProtobufPropertyOrdering *QProtobufMessage::propertyOrdering() const

Gibt den Zeiger auf die Eigenschaftsreihenfolge der abgeleiteten Protobuf-Nachricht zurück.

Diese Funktion wurde in Qt 6.8 eingeführt.

[since 6.8] QByteArray QProtobufMessage::serialize(QAbstractProtobufSerializer *serializer) const

Serialisiert diese Protobuf-Nachricht mithilfe von serializer in ein „ QByteArray “.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` deserialize()`.

bool QProtobufMessage::setProperty(QAnyStringView propertyName, const QVariant &value)

Setzen Sie die Eigenschaft „ propertyName “ auf den Wert, der unter „ value “ gespeichert ist.

Wenn „ propertyName “ kein bekanntes Feld ist, wird der Wert ignoriert, und die Funktion gibt „ false “ zurück.

Gibt „ false “ zurück, wenn das Speichern von „ value “ in der Eigenschaft fehlschlägt. Andernfalls „ true “.

Siehe auch „ property()“.

[since 6.6] bool QProtobufMessage::setProperty(QAnyStringView propertyName, QVariant &&value)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.6 eingeführt.

[since 6.7] QList<QByteArray> QProtobufMessage::unknownFieldData(qint32 field) const

Gibt die unbekannten Werte von „ field “ zurück, sortiert in der Reihenfolge, in der sie über die Leitung empfangen wurden.

Diese Funktion wurde in Qt 6.7 eingeführt.

[since 6.7] QList<qint32> QProtobufMessage::unknownFieldNumbers() const

Gibt die Feldnummern zurück, die QtProtobuf bei der Deserialisierung nicht bekannt waren.

Diese Funktion wurde in Qt 6.7 eingeführt.

Verwandte Nicht-Mitglieder

[alias] QProtobufMessagePointer

Synonym für `std::unique_ptr<QProtobufMessage, QProtobufMessageDeleter>`. Verwenden Sie dies, um die Lebensdauer dynamisch zugewiesener `QProtobufMessages` zu verwalten, wie beispielsweise solche, die durch den Aufruf von ` QProtobufMessage::constructByName` erstellt wurden.

[since 6.11] template <typename To> To qprotobufmessage_cast(QProtobufMessage *from)

[since 6.11] template <typename To> To qprotobufmessage_cast(const QProtobufMessage *from)

Gibt das angegebene ` from `-Objekt zurück, das in den Zeigertyp ` To ` umgewandelt wurde, sofern das Objekt vom Typ ` To ` (oder einer Unterklasse) ist; andernfalls wird ` nullptr` zurückgegeben. Ist ` from ` gleich ` nullptr`, gibt diese Funktion zudem ` nullptr` zurück.

Das Template-Argument ` To ` muss ein Zeiger auf eine Klasse sein, die von ` QProtobufMessage ` erbt und mit dem Makro ` Q_PROTOBUF_OBJECT ` deklariert ist.

Beispiel:

QProtobufMessage *message = new myproject::MySpecificMessage();

// Cast to its own type (success)
auto *specific = qprotobufmessage_cast<myproject::MySpecificMessage *>(message);
// specific is a valid pointer

// Cast to an unrelated type (failure)
auto *another = qprotobufmessage_cast<myproject::AnotherMessage *>(message);
// another is nullptr

Diese Funktion verhält sich ähnlich wie die Standard-C++-Funktion ` dynamic_cast()`, hat jedoch den Vorteil, dass sie keine RTTI-Unterstützung erfordert und über die Grenzen dynamischer Bibliotheken hinweg funktioniert.

Warnung: Wenn der Typ, auf den „ To “ verweist, nicht mit dem Makro „ Q_PROTOBUF_OBJECT “ deklariert ist, ist der Rückgabewert dieser Funktion undefiniert.

Diese Funktionen wurden in Qt 6.11 eingeführt.

© 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.