我对Qt很新,我在查找如何从应用程序中保存/加载数据时遇到问题.
我正在创建一个日历应用程序,并且必须保存不同的类,如:死亡线,约会,生日等.
我已经找到了这个教程http://qt-project.org/doc/qt-4.8/tutorials-addressbook-part6.html,但它只描述了如何保存一种类.
所以我想知道你是否可以帮助我,因为我不知道如何以这种方式保存/加载多个类,我不需要对它进行一些详细的描述(但当然可以理解)但只是轻轻推进正确的方向.
因为在本教程中没有解释如何保存多个类:(
编辑:此程序适用于PC(学校项目)
解决方法:
您可以定义自定义类并为其实现流运算符:
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;
请注意,读取和写入文件的顺序应该相同.