- Qt 6.10
- Qt Protobuf
- C++ Classes
- QAbstractProtobufSerializer
- Qt 6.10.2 Reference Documentation

# QAbstractProtobufSerializer Class

The QAbstractProtobufSerializer class is interface that represents basic functions for serialization/deserialization. More...

Header: | `#include <QAbstractProtobufSerializer>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Protobuf)` `target_link_libraries(mytarget PRIVATE Qt6::Protobuf)`
Since: | Qt 6.5
Inherited By: | QProtobufJsonSerializer and QProtobufSerializer

- List of all members, including inherited members

Note: All functions in this class are reentrant.

## Public Types

`(since 6.8)` enum class | Error { None, InvalidHeader, UnknownType, UnexpectedEndOfStream, InvalidFormat }

## Public Functions

virtual | ~QAbstractProtobufSerializer()
bool | deserialize(QProtobufMessage *message, QByteArrayView data) const
`(since 6.8)` virtual QAbstractProtobufSerializer::Error | lastError() const = 0
`(since 6.8)` virtual QString | lastErrorString() const = 0
QByteArray | serialize(const QProtobufMessage *message) const

## Macros

| Q_PROTOBUF_OBJECT

## Detailed Description

The QProtobufSerializer class registers serializers/deserializers for classes implementing a protobuf message, inheriting QProtobufMessage. These classes are generated automatically, based on a `.proto` file, using the CMake function qt_add_protobuf or by running qtprotobufgen directly.

This class should be used as a base for specific serializers. The handlers property contains all message-specific serializers and should be used while serialization/deserialization. Inherited classes should reimplement scope of virtual methods that used by registered message serialization/deserialization functions.

## Member Type Documentation

### `[since 6.8]` enum class QAbstractProtobufSerializer::Error

This enum contains possible errors that can occur during deserialization. When an error occurs, call lastErrorString() to get a human-readable error message.

Constant | Value | Description
--- | --- | ---
`QAbstractProtobufSerializer::Error::None` | `0` | No error occurred.
`QAbstractProtobufSerializer::Error::InvalidHeader` | `1` | Something went wrong while attempting to decode a header in the message.
`QAbstractProtobufSerializer::Error::UnknownType` | `2` | While serializing or deserializing a message, no deserializer was found for a message field.
`QAbstractProtobufSerializer::Error::UnexpectedEndOfStream` | `3` | While deserializing a message, the stream ended unexpectedly.
`QAbstractProtobufSerializer::Error::InvalidFormat` | `4` | The data has invalid format. For example the JSON value doesn't match the field type.

This enum was introduced in Qt 6.8.

## Member Function Documentation

### `[virtual noexcept]` QAbstractProtobufSerializer::~QAbstractProtobufSerializer()

Destroys this QAbstractProtobufSerializer.

### bool QAbstractProtobufSerializer::deserialize(QProtobufMessage *message, QByteArrayView data) const

Deserializes a registered Protobuf message message from a QByteArray data. message must not be `nullptr`. Returns `true` if deserialization was successful, otherwise `false`.

Unexpected/unknown properties in the data are skipped.

See also serialize().

### `[pure virtual, since 6.8]` QAbstractProtobufSerializer::Error QAbstractProtobufSerializer::lastError() const

Returns the last error for the serializer instance.

This function was introduced in Qt 6.8.

See also lastErrorString().

### `[pure virtual, since 6.8]` QString QAbstractProtobufSerializer::lastErrorString() const

Returns the last error string for the serializer instance.

This function was introduced in Qt 6.8.

See also lastError().

### QByteArray QAbstractProtobufSerializer::serialize(const QProtobufMessage *message) const

Serializes a registered Protobuf message message into a QByteArray. message must not be `nullptr`.

See also deserialize().

## Macro Documentation

### Q_PROTOBUF_OBJECT

Declares the propertyOrdering member in a class inheriting QProtobufMessage. This is used as part of the code generated by the qtprotobufgen tool.