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: |
Ö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) |
Verwandte Nicht-Mitglieder
| 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 nullptrDiese 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.