mercredi 3 décembre 2014

How do you serialize a QMap?


Vote count:

0




I'm trying to learn how to serialize QMap objects in windowed applications, using this code:



#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QString>
#include <QDataStream>
#include <QMap>
#include <QDebug>


void write ()
{
QString filename = "Z:/snippets.txt";
QFile myFile (filename);

if (!myFile.open(QIODevice::WriteOnly))
{
qDebug() << "Could not write " << filename;
return;
}

QMap<QString,QString> map;
map.insert("one","this is 1");
map.insert("two","this is 2");
map.insert("three","this is 3");

QDataStream out (&myFile);
out.setVersion(QDataStream::Qt_5_3);
out<<map;

myFile.flush();
myFile.close();
}

QMap<QString,QString> read ()
{
QString filename = "Z:/snippets.txt";
QFile myFile (filename);
QMap<QString,QString> map;
QDataStream in (&myFile);
in.setVersion(QDataStream::Qt_5_3);

if (!myFile.open(QIODevice::WriteOnly))
{
qDebug() << "Could not read " << filename;
return (map);
}

in >> map;

myFile.close();
return(map);
}

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_btnSave_clicked()
{
write();
}

void MainWindow::on_btnLoad_clicked()
{
QMap<QString,QString> map;
map = read();
QMapIterator<QString,QString> i(map);
//do other stuff
}


The write() function called by btnSave does indeed save the QMap. I can see the data in snippets.txt. I can see in the debugger that the read() function, however, doesn't assign anything to the map variable. ... What am I missing?



asked 1 min ago

Al C

1,235






How do you serialize a QMap?

Aucun commentaire:

Enregistrer un commentaire