Russian Qt Forum

Qt => Общие вопросы => Тема начата: vaansk от Октябрь 11, 2013, 20:34



Название: QVariantMap в stream(QByteArray) ошибка WriteFailed
Отправлено: vaansk от Октябрь 11, 2013, 20:34
Хочу добавить QVariant m в QDataStream &stream:

Код:
  friend QDataStream &operator <<(QDataStream &stream, MainList &list)
  { 
    QVariantMap m;

    // Добавляем количество элементов
    m.insert("COUNT", list.items.size());

    // Добавляем все элементы
    int counter = 0;
    for (auto it = list.items.begin(); it != list.items.end(); ++it)
    {
      for (int j = 0; j < COL_COUNT; j++)
      {
        QString key = QString(counter);
        m.insert(key, it->Data[j]);
        counter++;
      }
    }
    stream << m; 
    return stream; 
  };

однако после stream << m, в stream q_status = WriteFailed
В чем косяк?


Название: Re: QVariantMap в stream(QByteArray) ошибка WriteFailed
Отправлено: Fregloin от Октябрь 12, 2013, 20:12
Могу предположить что поток не знает как в него записать ваш конкретный вариант. Скорее всего нужно переопределить оператор потока << для вашего конкретного случая или же явно в поток писать POD типы, т.е. если вы знаете что в вашем variantMap- находятся пары string:string то так и пишите. Да, скорее всего нужно переопределить также оператор >>. А вообще я бы воздержался от такого подхода, в поток лучше писать конкретные и явные типы.