qsettings删除注册表_QSettings读写ini文件和注册表

本文介绍了Qt4中的QSettings类,用于读写Windows注册表和ini文件。通过示例展示了如何创建、读取和删除注册表项,以及如何处理中文字符。QSettings提供了一种兼容不同平台的配置文件处理方式,其功能超过Windows API。
摘要由CSDN通过智能技术生成

qt4.0一个非常有用的类QSettings

QSettings是qt4.0提供的一个读取配置文件的类,在windows平台,它提供了ini文件读些,注册表读写的功能。

而且使用也非常简单。大家可以参照它的示例:$QTDIR/examples/tools/settingseditor

我就简单点随便介绍介绍它的使用吧

QSettings::Format有两种:

QSettings::NativeFormat在windows平台可以读写windows注册表.

QSettings::IniFormat可以读写ini格式的配置文件

在Unix/X11平台下这两个Format效果是一样的:(

1.读写注册表

//注意的就是路径名必须是"/"而不是"//"等.否则不能读写,同时注意

//Format为QSettings::NativeFormat

QSettings *settings = new QSettings("HKEY_CURRENT_USER/", QSettings::NativeFormat);

//写HKEY_CURRENT_USER/regedit/test,设置test值为red

settings->setValue("regedit/test", "red");

//读 HKEY_CURRENT_USER/regedit/test,默认值是ddd

QString value = settings->value("regedit/test", "ddd").toString();

删除设置对应的是settings->remove( const QString & key )

2.读取ini配置文件

ini文件格式如下:

[Alpha]

Beta/Beta=1, 3, 4

Beta/Gamma=2

Beta/Delta=1111

Beta/Epsilon=5

Iota=7

Omicron=11

QSettings *settings = new QSettings(fileName, QSettings::IniFormat);

//写Beta/Beta

settings->setValue("Alpha/Beta/Beta", 68);

其他和读写注册表差不多,我就懒得写了

发觉QT4读写的这种配置,即可兼容windows下的ini文件,同时它的功能也比windows API所提供的功能强.

//这是中文化的文章:----------------------------------------------------------------------------------------------

http://blog.csdn.net/eastfind/archive/2009/01/15/3785060.aspx

说句实话,关于这个类(QSETTINGS)的摸索,只有一个字形容“累”

出于对国际化的考虑,QT的UNICODE支持非常出色,但是,对于中文的支持,还是有点繁琐的。

废话少说,国际惯例

1.运行环境

QT CREATOR 0.9(BETA) //QT的官方IDE,界面不错,还算实用

MINGW编译器(QT CREATOR 自带)

WINXP SP3 QT4.4.3 OPEN SOURCE 版本

2.INI文件模式

[我的资料]

我的博客=www.我的博客.com

3.代码解析

QString myfile = "../1.ini";   //设定INI文件

QSettings *mySetting = new QSettings(myfile,QSettings::IniFormat); //没有什么好解释的,用QSETTINGS的都知道

QByteArray myArray = mySetting->value("我的资料/我的博客","Default Value").toByteArray();

//这里是整个技术的核心!!通过实践证明,QSETTINGS是可以直接读取中文的QSTRING的,不过真正的意义在于把QSETTING的读取返回值放入到QByteArray中才是关键。

QTextCodec *codec=QTextCodec::codecForName("GBK"); //设定字符集为GBK(大小写均可,还可用GB18030代替)

QString outStr = codec->toUnicode(myArray); //这里就好解释了,通过译码器将字节数组中的值转化为UNICODE的QSTRING就O了

myEdit->setText(outStr); //呵呵,这句话是测试用的,我用的QLINEEDIT,其实用什么都无所谓的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值