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
登録済みの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.