여기 데모 코드입니다 : V는 메타 타입은 내가 정의 등록 L.에 저장하는 방법을 모르기 때문에,QVariant에 QList <T>을 저장하고 QDataStream으로 스트림 하시겠습니까?
가QList<Custom> L;
QVariant v(QVariant::fromValue(l));
QDataStream d;
d << v;
문제는 V를 스트리밍하는 방법을 알고하지 않는 D를 것으로 보인다 L을 메타 타입으로 사용하고 I/O 스트림을 등록했지만 L에는 메타 오브젝트가 없으므로 이것이 문제라고 생각합니다.
어떻게 든이 문제를 해결할 수 있습니까?
나중에 편집 :
QMetaType 코드를 디버깅 후, 나는 qRegisterMetaTypeStreamOperators<Type>("TypeString")
"TypeString"를 호출 할 때 "종류"뿐만 아니라 임의의 문자열이어야 사실을 발견했습니다. 이것은 문서에서 언급되었지만 실제로는 명확하지 않습니다. QtCentre 링크에서도이 점에 대해 언급했습니다. 나는 대답을 힘든 방법으로 찾은 것이 내 잘못이기 때문에 칼렙 피더슨의 대답을 받아들이기로 결정했다. :)
키가 QtCentre 링크에 있습니다. 유형 이름은 qRegisterMetaTypeStreamOperators의 문자열과 일치해야합니다! – rpg