Qt Protobuf

Qt Protobuf 生成器插件 生成基于 Qt 的类从 .proto 文件。可以使用这些类,来序列化和反序列化其关联的 Protobuf 消息。

概述

什么是协议缓冲?

Protocol buffers are a language-neutral, platform-neutral, and extensible mechanism for serializing structured data, which is compact and easy to use:

  • A user defines the structure of data in .proto 文件。
  • Proto compiler is invoked at build time on .proto files to generate code in various programming languages.

The provided format is suitable for network traffic or long-term data storage.

协议缓冲解决了哪些问题?

Protocol buffers provide a serialization format for typed and structured data packets up to a few megabytes in size. It allows for the extension with new information without invalidating existing data or requiring code to be updated. For more information, see Protocol Buffers Overview .

使用 Qt Protobuf 的好处

You can use a Protocol buffers mechanism in any Qt-based project:

  • Without the need to call a protocol buffer compiler explicitly.
  • Without manually integrating generated code into the project tree.
  • To access the serialization and deserialization API.
  • For integrated properties mechanism for generated protobuf messages.
  • For integrated gRPC-client support, see Qt GRPC module .
  • For integrated QML-types support for generated protobuf messages.
  • For using enabled Qt Core and Qt GUI types as a part of *.proto schema.

使用模块

Google protocol buffers provide a generator called protoc that supports extensions. qtprotobufgen 工具 is an extension for protoc and requires that you install protoc on your host system. For more information about the installation, see Protoc Installation .

QML API

The QML types of the module are available through the QML and QML_URI options in the qt_add_protobuf macro. The import name is equal to the .proto package name or defined by QML_URI option in the qt_add_protobuf macro. To use the types, add the following import statement to your .qml file:

import my.proto.package.uri
					

C++ API

使用 Qt 模块的 C++ API 要求直接 (或透过其它依赖) 链接到模块库。几个构建工具对此有专用支持,包括 CMake and qmake .

构建采用 CMake

使用 find_package() 命令定位所需模块组件在 Qt6 包:

find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
					

更多细节,见 构建采用 CMake 概述。

文章和指南

参考

范例

许可和归属

Qt Protobuf 模块在商业许可下是可用的来自 Qt 公司 。此外,它在自由软件许可下也是可用的: GNU LGPL (次一般公共许可) 第 3 版 ,或 GNU GPL (一般公共许可) 第 2 版 ,或 GNU GPL (一般公共许可) 第 3 版 。见 Qt 许可 进一步了解细节。

此外, qtprotobufgen tool in Qt 6.8.5 may contain third party modules under the following permissive licenses:

protobuf 第 21.9 版

BSD 3 条款新 (或修订) 许可