我尝试使用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)
我的rep文件如下:
#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)
如果有人对这个问题有所了解,那会很棒......
由于
答案 0 :(得分:2)
它必须在类之外的全局范围内声明:
QDataStream &operator<<(QDataStream &stream, const Model&);
注意返回的值,operator <<
必须返回与第一个参数相同的stream
,即通过引用。
里面的类应该声明一个友元函数:
friend QDataStream &operator<<(QDataStream &stream, const Model&);