Здравствуйте!
struct projectfile {
QString name;
QString family;
};
projectfile prfile;
prfile.name = nameEdit->text();
prfile.family = familyEdit->text();
QFile file(fileName); //в глобальных fileName уже есть
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_3);
out << prfile;
Ошибка:
form.cpp: In member function `void Form::on_saveButton_clicked()':
form.cpp:51: error: no match for 'operator<<' in 'out << prfile'
../../../include/QtCore/../../src/corelib/io/qdatastream.h:136: note: candidates
are: QDataStream& QDataStream::operator<<(qint8)
Т.е. не получается засунуть туда своб структуру данных... Пробовал делать класс, где в паблике нужные данные были. Таже самая история. Не понимаю почему так.
Как правильно быть, если есть потребность в сохранении своих типов данных.
Всем спасибо.
Спасибо. Но всё равно ничего не понял что зачем и почему. С дружесвенными функциями не знаком. Могли бы привести пример? А лучше на моём коде подправить.
Я нашёл выход - создал класс с моими данными. Этот класс наследник QByteArray. Вроде бы сохраняет.. Но по ощущением совсем не то. Проверить еще точно не удалось.
> Люди, подскажите как сделать это... Пока мне безразлично... с фрэндом, без.
Во-первых, изучи C++, дабы понять, почему нельзя сохранить любую структуру данных в поток, как ты это собирался сделать.
Во-вторых, для платформенно независимой сериализайии(а именно так это и называется!) используй boost::serialization или сохраняй как XML с помощью QtXml модуля.
В-третьих, попробуй выбрать язык, где сериализация "искаропки". Например, Java или Tcl.