[Qt-interest] Serialize QList<qint64>
Bruno Tezine
bruno at tezine.com
Thu Jul 28 15:53:01 CEST 2011
Hi Thiago,
It worked. I just executed the qmake again!
Thanks
Em 28/07/2011 10:11, Bruno Tezine escreveu:
> 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