このページでは

Protobuf Qt GUI Types Module

Qt Protobuf でネイティブの Qt GUI 型を使用するためのサポートを提供します。詳細...

このモジュールは Qt 6.6 で導入されました。

詳細な説明

Qt::ProtobufQtGuiTypes は、特定の Qt GUI 型をカプセル化するように設計された、事前定義済みの Protobuf メッセージを含むライブラリです。

サポートされている Qt GUI 型のリスト:

Qt GUI 使用方法

Qt GUI 型のサポートを有効にするには、CMakeプロジェクトにProtobufQtGuiTypesを依存関係として追加してください:

...
find_package(Qt REQUIRED COMPONENTS Protobuf ProtobufQtGuiTypes)
... # After target creation
target_link_libraries(${TARGET} PRIVATE Qt::ProtobufQtGuiTypes)

Qt GUI 型をフィールドとして使用するメッセージのシリアライズまたはデシリアライズを行う前に、登録メソッドを呼び出してください:

// e.g. in main.cpp
QtProtobuf::qRegisterProtobufQtGuiTypes();
...

サポートされているすべてのメッセージは、Qt GUI モジュールのQt型を記述した特別な.protoファイル「QtGui.proto」に記載されています。

このファイルを使用して、他の言語やフレームワーク向けのコードを生成することもできます。

インターフェースの .proto ファイルで、必要なQt GUI タイプ モジュールをインポートします。例:

syntax = "proto3";

package project.module.component;

import "QtGui/QtGui.proto";

message QMatrix4x4Message {
    QtGui.QMatrix4x4 matrix = 1;
}

Qt Protobuf ジェネレータは、ProtobufQtGuiTypes パッケージによって提供されるQt GUI 型を検出し、それらを直接使用します。これにより、追加の変換を行うことなく、これらの型を柔軟に使用することができます。

CMakeでは、QT_PROTO_INCLUDES ターゲットプロパティを使用して、ライブラリからprotoインクルードパスを抽出できます:

qt_add_protobuf(MyProtoLib
    PROTO_FILES
        MyQtGuiTypesUsage.proto
    PROTO_INCLUDES
        $<TARGET_PROPERTY:Qt::ProtobufQtGuiTypes,QT_PROTO_INCLUDES>
)

QImageのシリアライズ

ProtobufQtGuiTypes ライブラリは、QImage クラスを操作する機能を提供します。 通常、このライブラリはすべてのQImage オブジェクトをPNG 形式に変換します。しかし、QImage がQImage::Format の浮動小数点形式のいずれかを使用して作成された場合、PNG への変換によりデータが失われることになります。データ損失を防ぐため、ライブラリはシステムがサポートしている場合は自動的に画像ファイルをTIFF 形式に変換し、サポートされていない場合はPNG 形式に変換します。

注: TIFF を使用しない場合は 、画像を明示的に非浮動小数点形式に変換する必要があります。

© 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.