- 浏览: 228064 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wahahachuang8:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
服务器推送技术 java -
mahuanjian:
[flash=200,200][/flash]
服务器推送技术 java -
wenjundiandian:
下面有网页编辑器的话还是会被隐藏.
ext中消息框、提示框、确认框显示在最前面的解决方法 -
天塔上的猫:
/**
* JAVA常见的权限控制算法的实现
*
* ...
JAVA常见的权限控制算法的实现
本文介绍的是QSettings的 IniFormat
截止目前(Qt4.7)对中文的支持情况,如果你想实现自己定义格式(比如"[中文] 中文=中文"这样),可参看 QSettings 自定义格式
Qt4.4(包含)之前先看个例子: # include <QtCore / QCoreApplication> # include <QtCore / QSettings> int main (int argc , char **argv ) { QCoreApplication app (argc , argv ); QString value = QString ::fromLocal8Bit (" 我是汉字 " ); QSettings settings (" config.ini " , QSettings ::IniFormat ); settings .setValue (" setcion/key " , value ); return 0 ; } 结果如下: [setcion] key=\x6211\x662f\x6c49\x5b57 这儿Value部分显示的是上面4个汉字的UCS2(即UTF-16)编码。如果你喜欢,你可以叫它“乱码”。 为什么四个汉字变成这个样子了呢? 因为4个汉字的Unicode编码超出了ASCII码的范围,而将其序列化的话,有很多种不同的方案,而这些不同的方案中,对特定的人来说,只有一种方案是最合适的,其他的可能都被这特定的人称作乱码。 众口难调啊?怎么办,那就不调了呗。直接给出UTF-16编码,这样一来,尽管每个人都不太喜欢,但总比让多数人都扫兴要好得多。 Qt4.5的转变从Qt4.5开始,QSettings提供了一个新的成员函数,setIniCodec。这样一来,各种非ASCII码的用户应该高兴一点了,喜欢什么编码自己来设置,而不用考虑什么国际用户。 对简体中文用户来说,GBK还是UTF-8任意选择一个自己喜欢的就行了: # include <QtCore / QCoreApplication> # include <QtCore / QSettings> int main (int argc , char **argv ) { QCoreApplication app (argc , argv ); QString value = QString ::fromLocal8Bit (" 我是汉字 " ); QSettings settings (" config.ini " , QSettings ::IniFormat ); # ifdef LOVE_GBK settings .setIniCodec (" GB2312 " ); # else settings .setIniCodec (" UTF8 " ); # endif settings .setValue (" setcion/key " , value ); return 0 ; } 结果如下: [setcion] key=我是汉字 Key中的中文截止到目前的Qt4.6.3,Key 和Section的中文仍不能使用本地编码,比如: # include <QtCore / QCoreApplication> # include <QtCore / QSettings> # include <QtCore / QStringBuilder> int main (int argc , char **argv ) { QCoreApplication app (argc , argv ); QString section = QString ::fromLocal8Bit (" 节 " ); QString key = QString ::fromLocal8Bit (" 键 " ); QString value = QString ::fromLocal8Bit (" 我是汉字 " ); QSettings settings (" config.ini " , QSettings ::IniFormat ); settings .setIniCodec (" UTF-8 " ); settings .setValue (section %" / " %key , value ); return 0 ; } 注意:此处字符串连接用的Qt4.6引入的%,如果是之前的版本,换成+并删除相应头文件即可。 结果如下: [%U8282] %U952E=我是汉字 同一开始的Value一样,Key和Section中非ASCII字符的仍会进行转义,此处我们看到的就是%U后跟UTF-16的数值。该部分不受 setIniCodec的影响。 不止中文这样其实不止中文是这样,Qt对传统的Latin系列编码也没有特殊的照顾 当Section Key Value中出现Latin字符时,同样将进行转义。比如: #include <QtCore/QCoreApplication> #include <QtCore/QSettings> #include <QtCore/QStringBuilder> int main(int argc, char **argv) { QCoreApplication app(argc, argv); QString section = QString::fromLocal8Bit("ÀÁ"); QString key = QString::fromLocal8Bit("ÀÁ"); QString value = QString::fromLocal8Bit("ÀÁ"); QSettings settings("config.ini", QSettings::IniFormat); settings.setValue(section%"/"%key, value); return 0; } 结果: [%E0%E1] %E0%E1=\xe0\xe1 Settings源码%QTDIR%\src\corelib\io\qsettings.cpp QSettings的数据在内存中存放于 QMap<QString, QVariant> 中,读写文件也就是将文件读入该Map和从该Map写入文件的过程。 ini文件的写入 bool QConfFileSettingsPrivate::writeIniFile(QIODevice &device, const ParsedSettingsMap &map ) Key的写入相对比较简单,因为本身就是字符串,只需序列化即可(对'0'-'9', 'a'-'z', 'A'-'Z', '_', '-', '.'之外的字符进行转义处理)。 void QSettingsPrivate::iniEscapedKey(const QString &key, QByteArray &result) Value的写入就很复杂了,分两步走:
|
来源:http://hi.baidu.com/cyclone/blog/item/80a0793140fd3814eac4af7d.html
发表评论
-
qtwebkit中js事件的正确写法。
2012-08-15 09:50 921<script language="JavaS ... -
qtwebkit截图
2012-08-13 13:29 772QSize size = m_view->page()- ... -
Qt 中一些常用类的中文说明
2012-02-22 23:39 1023作者:丁冬,华清远见嵌 ... -
输入法
2012-01-04 18:00 0http://civilnet.cn/syszux/syszu ... -
QT启动前有绿屏怎么处理
2012-01-04 09:49 1185笑看人生pual(13290889) 16:32:27QT启动 ... -
QT实现截取屏幕
2012-01-04 09:48 1145本文阐述了一个在Qtopia下截取屏幕的方法,实际上Qtopi ... -
在QT中通过摄像头动态显示图片 .
2012-01-04 09:49 1874Camgui::Camgui(QWidget *parent, ... -
脚本打包大量文件学习
2011-12-19 09:33 731TARGET_DIR=$PWDcd /list=`cat &l ... -
QT 同时支持鼠标和触摸屏
2011-12-17 12:36 1580现在 如果我要使用鼠标导入环境变量export QWS_M ... -
Qt中Qstring,char,int,QByteArray之间到转换
2011-12-17 12:31 1094各种数据类型的相互转换char * 与 const char ... -
QT Creator的style sheet的几种用法(QT Creator)(StyleSheet)(样式)(QT4.7)(用法)
2011-12-10 20:16 1795摘要: QT Create中,对butt ... -
QT学习笔记(QT4.7)(笔记)
2011-12-10 20:16 1813摘要: 由于 ... -
QT 4.7支持中文(QT4.7)(中文)(makeqpf)
2011-12-10 20:16 1971摘要: QT4.7.0在移植到开发板上的 ... -
QImage变暗
2011-12-16 14:50 1047_image = QPixmap::grabWindow ... -
Qt/Embedded动态旋转屏幕
2011-12-10 20:16 1039距离上次发博文已经有 ... -
如何在QT下执行shell或外部程序
2011-12-10 20:17 1919摘要: 通常,我们运行shell程序都是在终端里进行的, ... -
linux嵌入式qt的屏幕旋转与字体大小问题
2011-12-16 14:50 2294【1、与qt程序显示文字大小有关的两项】 export ... -
改变QMessageBox的大小
2011-12-16 14:50 967创建一个QMessageBox: QMessageBox m ... -
QT坐标变换
2011-12-09 09:18 997------------------------------ ... -
QT画对话框窗口圆角
2011-12-09 09:16 1494QPainterPath path; QRectF rec ...
相关推荐
Qt之解决QSettings中文乱码问题源码,win10,MinGw32编译通过,问题正常解决
QSettings在存取配置文件时,存在写延时问题,有时断电会出现参数丢失,先改用封装Windows下的WritePrivateProfileStringA函数来替代QSettings的相关操作。
QSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSettingsQSett
QT读写配置文件之QDataStream和QSettings,
代码演示了使用QSettings创建、设置和读取ini文件的过程。
本资源代码是进行PyQt5的QSettings测试代码,详细描述可以看我的文章:PyQt5随笔:QSettings 的简单使用详说,进行软件的设置状态数据储存与初始化。压缩文件包括test.py,testui.py两个python文件。
QT学习之如何读写配置文件
//向ini文件的第一个节写入内容,ip节下的第一个参数11.12.//向ini文件的第一个节写入内容,ip节下的第二个参数13.14.//向ini文件的第二个
在Qt里可以使用`QSettings`来实现,QSettings类提供一个独立于平台的应用程序设置,Qt已经封装好,修改、读取用户的环境变量不需要管理员权限,并且修改也是直接针对系统的环境配置进行修改,并非当前进程有效(所以...
QT INI文件 参数保存 QSettings类
对QT配置文件管理类进行封装,提高效率;统一管理各配置项默认值;避免不必要的文件读写和混乱的本地缓存。
写这类的原因的是每次操作QSettings的指针时候,用完都要delete指针,比较麻烦,可以使用类的析构函数自动删除。还有写入值的时候,QSettings类的成员函数setValue每次都会覆盖之前的值,因此自己写的类成员函数,...
Qt实战案例之利用QSettings读写ini配置文件,本案例介绍利用QSettings实现Qt读写ini配置文件,Qt5、Qt6可完美运行,可参考文章:https://wendy.blog.csdn.net/article/details/124949978
无缝处理来自QSettings字符串的类型转换 集成映射处理显示和内部设置之间的转换,例如,组合框中的漂亮文本转换为整数值 通过dict (到JSON)或XML保存和加载配置 BSD许可 介绍 API的核心是ConfigManager实例,该...
快应用开发
注册表的修改与添加删除等操作,MFC环境下的操作与实现.
QSettings* settings=new QSettings("./setting.ini",QSettings::IniFormat); if(!QFile("./setting.ini").exists()) { settings->setIniCodec(QTextCodec::codecForName("utf-8")); settings->setValue("host...
用QSettings写注册表 用QString读注册表 用QSettings写ini文件 用QSettings读ini文件
可以用来开发中文输入法,中文拼音字库,每一行对应一个拼音,可以添加组合,Qt下可以通过读文件的方式,使用QSettings把拼音及其对应的汉字,保存在文件中