利用Qt的QSetting类存储自定义数据类型所需准备 4000
2013-11-10 17:16
363 查看
很多时候,我们都需要自定义自己的数据类型,并将之存入一些特定的文件里,作为一种存储的形式。
在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这个类,通过它可以将我们的数据已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类存储自定义数据类型所需准备
- 利用Sqlite数据库的blob类型存储自定义的数据类型
- 利用Sqlite数据库的blob类型存储自定义的数据类型(小寿转载)
- 利用Sqlite数据库的blob类型存储自定义的数据类型
- sql 通过存储过程和自定义类型批量新增数据
- Qt-信号和槽中使用自定义数据类型
- Qt中菜单创建及自定义数据类型与QVariant互转
- QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类
- 如何在Qt中使用自定义数据类型
- iOS —— NSUserDefault存储自定义数据类型
- 利用siezof运算现实存储各种数据类型使用内存空间的字节数
- Qt 线程间信号槽传递自定义数据类型(qRegisterMetaType的使用)
- 利用sqlite创建一个数据user,其含有一张表person,该person表中含有三个列,其中第一字段为主键int类型的,其他两个字段自定义数据类型和名称。
- Qt 学习 第1节 自定义数据类型应用
- 如何在Qt中使用自定义数据类型
- Golang 如何定义一个接口类型的切片,它可以用来存储混合类型的数据,又如何自定义错误信息输出,以及如何定义变参函数,还有字符串多种拼接方式
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题
- 利用IStorage和IStream存储自定义数据到Inventor文件 (C++)
- 使用Hibernate的XML配置来映射枚举类型,存储自定义类型数据
- 利用抽象工厂实现自定义多数据类型接口