Qt — Как сохранить данные для моего приложения

Я довольно новичок в Qt, и у меня есть проблема с поиском того, как сохранить / загрузить данные из вашего приложения.

Я создаю приложение Календарь и должен сохранять различные классы, такие как: Сроки, встречи, дни рождения и т. Д.

И я нашел этот урок http://qt-project.org/doc/qt-4.8/tutorials-addressbook-part6.html но это только описывает, как сохранить один тип класса.

Поэтому мне было интересно, можете ли вы помочь мне, потому что я не знаю, как сохранить / загрузить несколько классов таким образом, мне не нужно какое-то подробное описание этого (однако это было бы желательно, конечно), но только осторожный толчок в правильное направление.

Потому что нигде в этом уроке не объясняется, как сохранить несколько классов 🙁

РЕДАКТИРОВАТЬ: Эта программа для ПК (проект для школы)

2

Решение

Вы можете определить свой собственный класс и реализовать для него потоковые операторы:

class CustomType
{
public:

CustomType()
{
paramter1=0;
paramter2=0;
paramter3="";

}
~CustomType(){}

int paramter1;
double parameter2;
QString parameter3;
};inline QDataStream& operator<<( QDataStream &out, const CustomType& t )
{
out<<t.paramter1;
out<<t.paramter2;
out<<t.paramter3;return out;
}
inline QDataStream& operator>>( QDataStream &in, CustomType& t)
{
in>>t.paramter1;
in>>t.paramter2;
in>>t.paramter3;

return in;
}

Вы должны зарегистрировать операторы потока вашего класса где-нибудь в вашем коде при запуске приложения перед потоковой передачей класса. Это можно сделать в конструкторе вашего главного окна:

qRegisterMetaTypeStreamOperators<CustomType>("CustomType");

Теперь вы можете сохранять или загружать объекты вашего класса в файл или из файла.

Сохранение некоторых объектов ваших пользовательских классов в файл:

QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_8);
out << object1;
out << object2;

загрузка объектов ваших пользовательских классов из файла:

QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_8);
in >> object1;
in >> object2;

Обратите внимание, что порядок чтения и записи в файл должен быть одинаковым.

5

Другие решения