Qt Protobuf Veränderliche Getter

Die generierten Qt Protobuf Nachrichten erlauben den Zugriff auf die Felder eines Nachrichtentyps über veränderbare Getter. Die Getter haben das Präfix mut und geben eine nicht-konstante Referenz auf das Feld zurück.

message Point {
    double x = 1;
    double y = 2;
}

message Line {
    Point start = 1;
    Point end = 2;
}

Das obige Schema .proto erzeugt den folgenden Code für die Nachricht Line:

class Line : public QProtobufMessage
{
    const Point &start() const &;
    Point &mutStart() &;
    ...

    const Point &end() const &;
    Point &mutEnd() &;
    ...
}

Für die Felder start und end erzeugt der qtprotobufgen-Generator zusätzliche veränderbare Getter: mutStart und mutEnd. Verwenden Sie diese Getter, um Felder direkt zu ändern, ohne Zwischennachrichten zu erstellen:

Line line;// Setzen des Zeilenanfangspunkts auf (5.0, 5.0)line.mutStart().setX(5.0); line.mutStart().setY(5.0);// Setzen des Zeilenendpunkts auf (10.0, 20.0)line.mutEnd().setX(10.0); line.mutEnd().setY(20.0);// Anzeigen der Line-DatenqDebug().nospace() << "start: (" << line.start().x() << "," << line.start().y() << ") "
   "Ende: ("<< line.end().x()<< ","<< line.end().y()<< ")";

Der Aufruf der mutable getters führt alle notwendigen Feldzuweisungen durch und ermöglicht es Ihnen, die zugrunde liegenden Daten direkt zu ändern.

Warnung! Mutable Getters fügen ein mut Präfix zu den Feldnamen hinzu. Wenn eine Nachricht Felder mit den Namen field und mutField enthält, kommt es zu einem Benennungskonflikt. Dieses Szenario wird derzeit nicht unterstützt und führt zu einem Generatorfehler.

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