Qt5 Удаленные объекты + пользовательский тип, но не в POD

Я хотел бы использовать множество пользовательских объектов с удаленными объектами Qt5.
Поскольку я читал, они не могли бы быть созданы как PODs в файле .REP.
Я пытался сделать следующее:

namespace my::api {
class Card {
Q_GADGET

Q_PROPERTY(QString type READ type WRITE setType)
[... removed property functions]
Q_PROPERTY(QString id READ id WRITE setId)
[... removed property functions]

public:
static void declareQML() {
qRegisterMetaType<my::api::Card>("Card");
}
};

inline QDataStream& operator<<(QDataStream& stream, const my::api::Card & value) {
stream << value.type() << value.id();
return stream;
}

inline QDataStream& operator>>(QDataStream& stream, quint::api::Card & value) {
QString tmp;
stream >> tmp;
value.setType(tmp);

stream >> tmp;
value.setId(tmp);

return stream;
}

class Result {
Q_GADGET

Q_PROPERTY(bool status READ status WRITE setStatus NOTIFY statusChanged)
public:
bool status() { return m_status; }
public slots:
void setStatus(bool p) { m_status = p;  emit statusChanged(); }
private:
bool m_status;

public:

static void declareQML() {
qRegisterMetaType<my::api::Result>("Result");
}

Result() : m_code(false) {}
};

inline QDataStream& operator<<(QDataStream& stream, const my::api::Result & value) {
stream << value.status();
return stream;
}

inline QDataStream& operator>>(QDataStream& stream, my::api::Result & value) {
bool tmp;
stream >> tmp;
value.setStatus(tmp);
return stream;
}
}

Затем сделайте что-нибудь подобное в .REP:

SLOT(checkCard(my::api::Card card));
SIGNAL(checkCardResponse(my::api::Result result));

Однако я получаю

Trying to construct an instance of an invalid type, type id: 1073676288
Trying to construct an instance of an invalid type, type id: 655615
Trying to construct an instance of an invalid type, type id: 1073676288

от клиента, когда я пытаюсь сделать checkCard ().

все вещи DeclareQML вызывается сразу после запуска приложения
(до создания реплики).

Может кто-нибудь опубликовать мне полный / рабочий пример, как использовать пользовательские классы
с удаленными объектами QT5 без создания пользовательских классов в качестве POD в
REP файл?

1

Решение

Хорошо, оказалось, что проблема не имеет ничего общего с переданной структурой. У меня есть
PROP в REP, который не может быть сгенерирован, поэтому практически система зависала, когда пыталась создать экземпляр реплики.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]