[Qt-interest] Serialize QList<qint64>

Bruno Tezine bruno at tezine.com
Wed Jul 27 21:04:42 CEST 2011


Hi,
How can I serialize a QList<qint64>?
I already can serialize any class of mine, but I didn't figure it out on 
how to serialize a simple QList<qint64>.
Whenever I try to serialize it, I get the assert saying "Invalid type to 
save".  Any ideas? Thanks/Bruno.

I registered the data type:
         qRegisterMetaType<QList<qint64> >();
         qRegisterMetaTypeStreamOperators<QList<qint64> >("QList<qint64>");

Registered the stream operators:
     QDataStream &operator<<(QDataStream &stream, const QList<qint64> &d);
     QDataStream &operator>>(QDataStream &stream, QList<qint64> &d);

...and here is the implementation(it's never called):
QDataStream &operator<<(QDataStream &stream, const QList<qint64> &d)
{
     stream<<(quint32)0xA0B0C0D0; //Magic Number
     stream<<d.count();
     foreach(qlonglong number, d)
         stream<<number;
     return stream;
}

QDataStream &operator>>(QDataStream &stream, QList<qint64> &d)
{
     quint32 magic;
     stream >> magic;
     if (magic != 0xA0B0C0D0)
     {
         BLogger::log(LogTypeError,NULL,"deserializing","Invalid magic 
number");
         return stream;
     }
     int listCount;
     stream>>listCount;
     QList<qlonglong> list;
     for(int i=0;i<listCount;i++)
     {
         qlonglong temp;
         stream>>temp;
         list.append(temp);
     }
     d=list;
     return stream;
}




More information about the Qt-interest-old mailing list