我可以在REPC生成的副本中使用QDomDocument信号/插槽吗? 关于QtRO
的问题我用简单的例子测试了QtRemoteObject,但是一旦我将QDomDocument添加到.rep文件中,我就会收到错误:
/Qt/5.7/android_armv7/include/QtCore/qmetatype.h: In instantiation of 'constexpr int qMetaTypeId() [with T = QDomDocument]':
/Qt/5.7/android_armv7/include/QtCore/qmetatype.h:1752:27: required from 'constexpr int qRegisterMetaType() [with T = QDomDocument]'
rep_pingpong_replica.h:32:41: required from here
/Qt/5.7/android_armv7/include/QtCore/qglobal.h:746:47: error: static assertion failed: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system
.rep文件
#include <QDomDocument>
class PingPong {
SLOT(void ping(QString msg));
SLOT(void pingXml(QDomDocument xml));
SIGNAL(pong(QString msg));
}
.rep文件不允许Q_DECLARE_METATYPE 在我的应用程序中,我只是在使用 qRegisterMetaType(&#34; QDomDocument&#34); 对于信号/插槽,但我不知道如何用QtRemoteObject做到这一点?
最好的问候
马立克
答案 0 :(得分:0)
我已经成功了, 在使用编译错误生成rep文件之后,编辑它们并在类体之前粘贴QDataStream定义,如果在signal / slot中有多个具有QDomDocument的类,则需要ifndef
#ifndef _xml_operator_
#define _xml_operator_
Q_DECLARE_METATYPE(QDomDocument)
inline QDataStream& operator<<(QDataStream& out, QDomDocument xml)
{
out << xml.toString();
return out;
}
inline QDataStream& operator>>(QDataStream& in, QDomDocument& xml)
{
QString msg;
in >> msg;
xml.setContent(msg);
return in;
}
#endif //_xml_operator_