このページでは

QAbstractProtobufSerializer Class

QAbstractProtobufSerializer クラスは、シリアライズ/デシリアライズのための基本機能を表すインターフェースです。詳細...

ヘッダー: #include <QAbstractProtobufSerializer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
以下より: Qt 6.5
継承元:

QProtobufJsonSerializer およびQProtobufSerializer

注:このクラスのすべての関数は再入可能である。

パブリック型

(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::None0エラーは発生しませんでした。
QAbstractProtobufSerializer::Error::InvalidHeader1メッセージのヘッダーのデコード中に問題が発生しました。
QAbstractProtobufSerializer::Error::UnknownType2メッセージのシリアル化またはデシリアル化中に、メッセージフィールドに対応するデシリアライザが見つかりませんでした。
QAbstractProtobufSerializer::Error::UnexpectedEndOfStream3メッセージのデシリアライズ中に、ストリームが予期せず終了しました。
QAbstractProtobufSerializer::Error::InvalidFormat4データの形式が不正です。たとえば、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() によって呼び出され、QByteArrayView data から、登録済みの Protobufmessage をデシリアライズします。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

これは、登録済みのProtobuf `message` をシリアル化するために、serialize() によって呼び出されます。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.