c – Qt – 如何为我的应用程序保存数据

我对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;

请注意,读取和写入文件的顺序应该相同.

上一篇:linux – dd图像太大无法恢复


下一篇:python调用系统脚本自动输入'yes/no'