2009-09-17 4 views
3

여기 데모 코드입니다 : 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 링크에서도이 점에 대해 언급했습니다. 나는 대답을 힘든 방법으로 찾은 것이 내 잘못이기 때문에 칼렙 피더슨의 대답을 받아들이기로 결정했다. :)

답변

2

해당 유형의 경우 register output operators해야합니다. similar question on QtCentre도 참조하십시오.

이 의미는 documentation에 정의 된 서명과 일치하는 비 멤버 출력 연산자를 정의한 다음 qRegisterMetaTypeStreamOperators을 호출해야 함을 의미합니다.

+1

키가 QtCentre 링크에 있습니다. 유형 이름은 qRegisterMetaTypeStreamOperators의 문자열과 일치해야합니다! – rpg

관련 문제