Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Апрель 19, 2012, 20:07



Название: Как записать QMap <QString,T> в файл ?
Отправлено: virtual_root от Апрель 19, 2012, 20:07
Добрый вечер! Ребята,подскажите,пожалуйста, что не так я делаю. Мне необходимо записать в файл QMap <QString,Т>
где Т - структура.
Имею следующий код:
Код:
struct InfoNews{
    QString body;
    QString title;
    QDateTime date_from;
    QDateTime date_to;
    bool push;
    bool read;
    QString img;
};

 QMap <QString,InfoNews> m_mapNews;
...

QFile file(FILE_NAME);
    file.open(QIODevice::WriteOnly);
    QDataStream out(&file);
    out << m_mapNews;
    file.close();

При компиляции получаю следующую ошибку:
 error: no match for 'operator>>' in 'operator>>(((QDataStream&)((QDataStream*)in)), ((QString&)(& key))) >> value'

Что я не так написала?


Название: Re: Как записать QMap <QString,T> в файл ?
Отправлено: Странник от Апрель 19, 2012, 20:52
QDataStream в душе не чает, как работать с вашей структурой. реализуйте операторы << и >> для нее.

Код:
QDataStream &operator<<(QDataStream &out, const InfoNews &infoNews)
{
    out << infoNews.body;
    out << infoNews.title;
    out << infoNews.date_from;
    out << infoNews.date_to;
    out << infoNews.push;
    out << infoNews.read;
    out << infoNews.img;

    return out;
}
и >> аналогично.


Название: Re: Как записать QMap <QString,T> в файл ?
Отправлено: virtual_root от Апрель 19, 2012, 21:45
спасибо большое! Помогло!