Qt RemoteObjects

Qt RemoteObjects

本文关键字:RemoteObjects Qt      更新时间:2023-10-16

我尝试使用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 的文档中,我读到支持自定义类型 (https://doc.qt.io/qt-5.10/qtremoteobjects-repc.html(

如果有人对这个问题有想法,那就太棒了......

谢谢

它必须在全局范围内声明,在类之外:

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

小心返回值,operator <<必须返回与第一个参数相同的stream,即通过引用。

里面的类应该声明一个友元函数:

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