Qt RemoteObjects - PullRequest
       5

Qt RemoteObjects

0 голосов
/ 18 мая 2018

Я пытаюсь отправить пользовательский объект с удаленными объектами Qt.

Я объявил свой класс следующим образом:

#include <QDebug>
#include <QObject>
#include <QDataStream>

class Model : public QObject {
  Q_OBJECT
public:
  explicit Model(QObject *parent = nullptr);

  Model(const Model &other);

  ~Model();

  bool operator!=(Model &other);
  Model operator=(Model &other);

  QDataStream operator<<(const Model&);
  Model operator>>(const QDataStream);
signals:

public slots:

public:
  QString text1;
  QString text2;

};

Q_DECLARE_METATYPE(Model)

Мой файл ответов выглядит так:

#include "../model/Model.h"

class Remote {
  PROP(Model resultModel);

  SLOT(void resultModelChanged_slot(Model resultModel));
};

Когда я пытаюсь построить приложение, я получаю следующую ошибку:

error: no match for ‘operator<<’ (operand types are ‘QDataStream’ and ‘const Model’)
         stream << *static_cast<const T*>(t);

Кто-нибудь знает о каком-нибудь сложном примере QtRemoteObject?Пример, который я нашел, довольно прост и работает (https://doc.qt.io/qt-5.10/qtremoteobjects-gettingstarted.html), но я не нашел пример со сложными (пользовательскими) типами.

В документации по rpc я читал, что поддерживаются customTypes (https://doc.qt.io/qt-5.10/qtremoteobjects-repc.html)

Было бы здорово, если бы у кого-то была идея по этому вопросу ...

Спасибо

1 Ответ

0 голосов
/ 18 мая 2018

Он должен быть объявлен в глобальной области видимости вне класса:

QDataStream &operator<<(QDataStream &stream, const Model&);

Будьте осторожны с возвращаемым значением, operator << должно возвращать то же stream, что и в первомаргумент, т.е. по ссылке.

Класс внутри должен объявить функцию друга:

friend QDataStream &operator<<(QDataStream &stream, const Model&);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...