QAbstractProtobufSerializer Class
QAbstractProtobufSerializer 类是一个接口,它实现了序列化和反序列化的基本功能。更多内容...
| 头文件: | #include <QAbstractProtobufSerializer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Protobuf) target_link_libraries(mytarget PRIVATE Qt6::Protobuf) |
| 自: | Qt 6.5 |
| 由以下版本继承: |
注:本类中的所有函数均为可重入函数。
公共类型
(since 6.8) enum class | Error { None, InvalidHeader, UnknownType, UnexpectedEndOfStream, InvalidFormat } |
公共函数
| QAbstractProtobufSerializer() | |
| 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 |
私有函数
| virtual bool | deserializeMessage(QProtobufMessage *message, QByteArrayView data) const = 0 |
| virtual QByteArray | serializeMessage(const QProtobufMessage *message) const = 0 |
宏
详细说明
QProtobufSerializer 类用于为实现Protobuf消息(继承自QProtobufMessage )的类注册序列化器/反序列化器。这些类是基于.proto 文件,通过CMake函数qt_add_protobuf或直接运行qtprotobufgen自动生成的。
该类应作为特定序列化器的基类使用。handlers 属性包含所有特定于消息的序列化器,并在序列化/反序列化过程中应使用该属性。派生类应重新实现那些被已注册的消息序列化/反序列化函数所使用的虚方法。
成员类型文档
[since 6.8] enum class QAbstractProtobufSerializer::Error
该枚举包含反序列化过程中可能出现的错误。发生错误时,请调用lastErrorString() 以获取易于理解的错误信息。
| 常量 | 值 | 描述 |
|---|---|---|
QAbstractProtobufSerializer::Error::None | 0 | 未发生错误。 |
QAbstractProtobufSerializer::Error::InvalidHeader | 1 | 在尝试解码消息中的头时出错。 |
QAbstractProtobufSerializer::Error::UnknownType | 2 | 在对消息进行序列化或反序列化时,未找到用于某个消息字段的反序列化器。 |
QAbstractProtobufSerializer::Error::UnexpectedEndOfStream | 3 | 在反序列化消息时,流意外结束。 |
QAbstractProtobufSerializer::Error::InvalidFormat | 4 | 数据格式无效。例如,JSON 值与字段类型不匹配。 |
此枚举类型于 Qt 6.8 中引入。
成员函数文档
[constexpr noexcept default] QAbstractProtobufSerializer::QAbstractProtobufSerializer()
默认——构造一个QAbstractProtobufSerializer 的实例。
[virtual noexcept] QAbstractProtobufSerializer::~QAbstractProtobufSerializer()
删除此链接:QAbstractProtobufSerializer 。
bool QAbstractProtobufSerializer::deserialize(QProtobufMessage *message, QByteArrayView data) const
将已注册的Protobuf消息message 从QByteArray data 中反序列化。message 不能是nullptr 。如果反序列化成功,则返回true ;否则返回false 。
data 中的意外/未知属性将被跳过。
另请参阅 serialize()。
[pure virtual private] bool QAbstractProtobufSerializer::deserializeMessage(QProtobufMessage *message, QByteArrayView data) const
该方法由deserialize()调用,用于将已注册的Protobufmessage 从QByteArrayView data 中反序列化。可假设message 并非nullptr 。若反序列化成功,则返回true ;否则返回false 。
[pure virtual, since 6.8] QAbstractProtobufSerializer::Error QAbstractProtobufSerializer::lastError() const
返回序列化器实例的最后一个错误。
该函数于 Qt 6.8 中引入。
另请参阅 lastErrorString()。
[pure virtual, since 6.8] QString QAbstractProtobufSerializer::lastErrorString() const
返回序列化器实例的最后一条错误字符串。
该函数自 Qt 6.8 起引入。
另请参阅 lastError()。
QByteArray QAbstractProtobufSerializer::serialize(const QProtobufMessage *message) const
将已注册的 Protobuf 消息message 序列化为QByteArray 。message 不能是nullptr 。
另请参阅 deserialize()。
[pure virtual private] QByteArray QAbstractProtobufSerializer::serializeMessage(const QProtobufMessage *message) const
该方法由serialize()调用,用于序列化已注册的Protobufmessage 。message 不能是nullptr 。返回一个包含序列化消息的QByteArray 。
© 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.