文档章节

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

天朝搬砖工
 天朝搬砖工
发布于 2013/11/10 17:16
字数 365
阅读 50
收藏 0

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

    在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”的提示了。

© 著作权归作者所有

共有 人打赏支持
天朝搬砖工
粉丝 4
博文 14
码字总数 11252
作品 0
东城
其他
QSetting的用法

QSetting是一个平台无关的可以设置和读取应用程序设置的类 用户可能希望应用程序记住自己应用程序的设置,windows记录在注册表中,mac中记录在xml中,在unix中,缺乏标准,所以很多都记录在....

晨曦之光
2012/04/13
1K
0
【Qt笔记】自定义拖放数据

上一章中,我们的例子使用系统提供的拖放对象进行拖放数据的存储。比如使用创建文本,使用创建 URL 对象等。但是,如果你希望使用一些自定义的对象作为拖放数据,比如自定义类等等,单纯使用...

大道无名
2016/08/02
15
0
【Qt笔记】自定义只读模型

model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,、和提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面。但是,面对变化万千的需求,Qt 预定义的几个模...

大道无名
2016/08/01
15
0
《Qt 实战一二三》

简介 “我们来自Qt分享&&交流,我们来自QML分享&&交流”,不管你是笑了,还是笑了,反正我们是认真的。我们就是要找寻一种Hold不住的状态,来开始每一天的点滴分享,我们是一个有激情,有态度...

u011012932
2015/12/12
0
0
【Qt笔记】model/view 架构

有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应用程序的界面中。早期的 Qt 要实现这个功能,需要定义一个组件,在这个组件中保存一个数据对象,比如...

大道无名
2016/08/01
25
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部