[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