Protobuf Qt GUI 类型模块

提供在 protobuf 中使用原生 Qt Gui 类型的支持。更多...

此模块处于 技术预览 状态。

此模块自 Qt 6.6 开始引入。

详细描述

Qt::ProtobufQtGuiTypes 是一个具有预定义 protobuf 消息的库,用于封装一系列 Qt Gui 类型。

支持的 Qt Gui 类型列表

Qt GUI 使用

要启用 Qt GUI 类型支持,将 ProtobufQtGuiTypes 添加为 CMake 项目的依赖项

...
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();
...

所有支持的消息都描述在一个特殊的 .proto 文件中,即 QtGui.proto,它描述了 Qt GUI 模块中的 Qt 类型。

您也可以使用该文件为其他语言或框架生成代码。

在您的接口 .proto 文件中导入所需的 Qt GUI 类型模块。例如

syntax = "proto3";

package project.module.component;

import "QtGui/QtGui.proto";

message QMatrix4x4Message {
    QtGui.QMatrix4x4 matrix = 1;
}

Qt Protobuf 生成器检测到由 ProtobufQtGuiTypes 包提供的 Qt GUI 类型,并直接使用它们。这为您提供了使用这些类型而不需要额外转换的灵活性。

QImage 序列化

ProtobufQtGuiTypes 库提供了与 QImage 类工作的可能性。通常,库将所有 QImage 对象转换为 PNG 格式。但如果 QImage 使用 https://doc.qt.ac.cn/qt-6/qimage.html#Format-enum 的 {浮点格式} 创建,则转换为 PNG 会导致数据丢失。为了避免数据丢失,如果系统支持,库会自动将图像文件转换为 TIFF 格式,否则转换为 PNG

注意:如果您不希望使用 TIFF,则需要将图像显式转换为非浮点格式。

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献copyright为各自的拥有者。本文档是根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 的条款发布的。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标都是其各自拥有者的财产。