利用Qt的QSetting类存储自定义数据类型所需准备

    很多时候,我们都需要自定义自己的数据类型,并将之存入一些特定的文件里,作为一种存储的形式。

    在Qt里,一般会用到QSetting这个类,通过它可以将我们的数据已k/v的形式存入一个.ini文件。不过,在能够被其顺利存入之前,需要注意一个细节,就是方法QSetting::setvalue(QString,QVariant)。在这里,要想能够顺利执行这个方法的话,你需要做3件事:

第一件,就是在你的自定义数据类型下面进行如下声明Q_DECLARE_METATYPE(MyData),使之能够存入QVrariant类型变量中;

第二件,就是给自定义的数据重载输入流与输出流的运算符,可以放自定义数据下面以内联函数的形式定义下来

inline QDataStream &operator <<(QDataStream & out,const MyData &u){...}

inline QDataStream &operator >>(QDataStream & in,MyData &u){...},重载的目的是为了是我们自定义的数据能够被操作符识别,便于将其以特定形式存入到外部文件中

第三件事情,记住在main函数体里,提前调用到如下两个函数来注册自定义数据类型
qRegisterMetaType<MyData>("MyData");

qRegisterMetaTypeStreamOperators<MyData>("MyData");

这样一来,我们的数据就可以被Qt的元对象系统识别,就不会出现“Invalid type to save”的提示了。

你可能感兴趣的:(利用Qt的QSetting类存储自定义数据类型所需准备)