[Qt-interest] Serialize QList<qint64>
Bruno Tezine
bruno at tezine.com
Thu Jul 28 15:11:34 CEST 2011
Hi Thiago,
I know it compiles with Q_DECLARE_METATYPE, but it doesn't serialize the
example below:
QList<qint64> list;
list<<1;
QVariant v=QVariant::fromValue(list);
QByteArray array;
QDataStream out(&array, QIODevice::WriteOnly);
out<<v;
using...
qRegisterMetaType<QList<qint64> >();
qRegisterMetaTypeStreamOperators<QList<qint64> >("QList<qint64>");
QDataStream&operator<<(QDataStream&stream, const QList<qint64> &d);
QDataStream&operator>>(QDataStream&stream, QList<qint64> &d);
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