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 클래스는 QProtobufMessage 를 상속하여 protobuf 메시지를 구현하는 클래스에 대한 직렬화기/역직렬화기를 등록합니다. 이러한 클래스는 .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
QByteArray ( data)에서 등록된 Protobuf 메시지 message 를 역직렬화합니다. message 는 nullptr 이어서는 안 됩니다. 역직렬화가 성공하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
data 에 포함된 예기치 않거나 알 수 없는 속성은 건너뜁니다.
serialize()도 참조하십시오 .
[pure virtual private] bool QAbstractProtobufSerializer::deserializeMessage(QProtobufMessage *message, QByteArrayView data) const
이 메서드는 deserialize()에 의해 호출되어, QByteArrayView data 에서 등록된 Protobuf message 를 역직렬화합니다. 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()에 의해 호출되어 등록된 Protobuf message 를 직렬화합니다. message 는 nullptr 이어서는 안 됩니다. 직렬화된 메시지가 포함된 QByteArray 를 반환합니다.
매크로 문서
Q_PROTOBUF_OBJECT
QProtobufMessage 를 상속하는 클래스 내에서 propertyOrdering 멤버를 선언합니다. 이는 qtprotobufgen 도구가 생성하는 코드의 일부로 사용됩니다.
© 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.