Я довольно новичок в Qt, и у меня есть проблема с поиском того, как сохранить / загрузить данные из вашего приложения.
Я создаю приложение Календарь и должен сохранять различные классы, такие как: Сроки, встречи, дни рождения и т. Д.
И я нашел этот урок http://qt-project.org/doc/qt-4.8/tutorials-addressbook-part6.html но это только описывает, как сохранить один тип класса.
Поэтому мне было интересно, можете ли вы помочь мне, потому что я не знаю, как сохранить / загрузить несколько классов таким образом, мне не нужно какое-то подробное описание этого (однако это было бы желательно, конечно), но только осторожный толчок в правильное направление.
Потому что нигде в этом уроке не объясняется, как сохранить несколько классов 🙁
РЕДАКТИРОВАТЬ: Эта программа для ПК (проект для школы)
Вы можете определить свой собственный класс и реализовать для него потоковые операторы:
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;
Обратите внимание, что порядок чтения и записи в файл должен быть одинаковым.