Qt Protobuf Mutable Getters
The generated Qt Protobuf messages allow access to the fields of a message type using mutable getters. The getters have the mut
prefix and return a non-const reference to the field.
message Point { double x = 1; double y = 2; } message Line { Point start = 1; Point end = 2; }
The above .proto
scheme generates the following code for the Line
message:
class Line : public QProtobufMessage { const Point &start() const &; Point &mutStart() &; ... const Point &end() const &; Point &mutEnd() &; ... }
For the start
and end
fields, the qtprotobufgen generator creates additional mutable getters: mutStart
and mutEnd
. Use these getters to modify fields directly, without creating intermediate messages:
Line line; // Setting the line start point to (5.0, 5.0) line.mutStart().setX(5.0); line.mutStart().setY(5.0); // Setting the line end point to (10.0, 20.0) line.mutEnd().setX(10.0); line.mutEnd().setY(20.0); // Display the Line data qDebug().nospace() << "start: (" << line.start().x() << "," << line.start().y() << ") " "end: (" << line.end().x() << "," << line.end().y() << ")";
Calling the mutable getters performs any necessary field allocation and allows you to modify the underlying data directly.
Warning: Mutable getters add a mut
prefix to field names. If a message contains fields named field
and mutField
, a naming conflict occurs. This scenario is currently unsupported and will result in a generator error.