文档章节

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

WangRichard
 WangRichard
发布于 2013/11/10 17:16
字数 365
阅读 49
收藏 0
点赞 0
评论 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”的提示了。

© 著作权归作者所有

共有 人打赏支持
WangRichard
粉丝 4
博文 13
码字总数 11049
作品 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
QT中的元对象系统(二):创建自定义的QT类型

原创文章,转载请注明出处,谢谢! 作者:清林,博客名:飞空静渡 我们在使用QT编程时,难免要定义自己需要的类型,但像QT自己的类型如QSzie、QString之类的,都是可以存储在QViriant中的,并...

长平狐
2013/01/11
648
0
Qt容器初探01(未完)

容器类是用于内存中存储给定类型的许多向的模板类。c++已经提供了很多容器,这些容器作为STL的一部分包含在标准的c++库中。 Qt也提供了自己的容器类,所以在编写Qt程序时,即可使用Qt容器也可...

乔三爷
2016/06/30
31
0
QByteArray和QVariant

前面我们在介绍QString的最后部分曾经提到了QByteArray这个类。现在我们就首先对这个类进行介绍。 QByteArray具有类似与QString的API。它也有相应的函数,比如left(), right(), mid()等。这些...

晨曦之光
2012/04/13
413
0
QtInternal 之 QVariant

注意:本文翻译自 http://developer.qt.nokia.com 中的 QtVariant ,中文译文见 简体中文版 ,如果你对翻译wiki感兴趣,请参考Wiki中文帮助 注:QtInternal 系列是用来介绍Qt的各种特性是如何...

晨曦之光
2012/05/08
187
0
OpenCV拾趣(二)——Qt嵌入OpenCV

本篇简介 在上一节中,我们完成了OpenCV SDK的构建,本节就来简单使用一下构建好的SDK,并为后续的开发做一些基本的准备。 >>点击这里回顾上一节内容 这个系列后续的开发会使用Qt作为基本开发...

ArcDriver
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
2
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
156
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部