- Qt 6.5
- Qt Protobuf
- Qt 6.5.2 Reference Documentation

# Qt Protobuf

The Qt Protobuf generator plugin generates Qt-based classes from `.proto` files. You can use the classes to serialize and deserialize their associated protobuf messages.

## Overview

### What are protocol buffers?

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` files.
- 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.

### Which problems do protocol buffers solve?

Protocol buffers provide a serialization format for packets of typed and structured data that are up to a few megabytes in size. Moreover, it can be extended with new information without invalidating existing data or requiring code to be updated. For more information, see Protocol Buffers Overview.

### What are the benefits of using Qt Protobuf?

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

- No need to call a protocol buffer compiler explicitly.
- No need to integrate generated code into project tree manually.
- Convenient serialization and deserialization API.
- Integrated properties mechanism for generated protobuf messages.
- Integrated gRPC-client support (see QtGrpc module).

### Incoming features

- Enabling using Qt Core and Qt GUI types as a part of *.proto schema.
- Enabling gRPC-server support.
- Enabling QML-types support for generated protobuf messages.

## Using Qt Protobuf

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

Example of installation for Linux, using apt:

     apt install -y protobuf-compiler
     protoc --version  # Ensure compiler version is 3+

For more information about component API usage, see CMake API.

## CMake API

- CMake Commands in Qt6 Protobuf

## Class Documentation

C++ Classes

## Examples

- Qt Protobuf Examples