- 浏览: 236273 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 971<script language="JavaS ... -
qtwebkit截图
2012-08-13 13:29 800QSize size = m_view->page()- ... -
Qt 中一些常用类的中文说明
2012-02-22 23:39 1072作者:丁冬,华清远见嵌 ... -
输入法
2012-01-04 18:00 0http://civilnet.cn/syszux/syszu ... -
QT启动前有绿屏怎么处理
2012-01-04 09:49 1249笑看人生pual(13290889) 16:32:27QT启动 ... -
QT实现截取屏幕
2012-01-04 09:48 1192本文阐述了一个在Qtopia下截取屏幕的方法,实际上Qtopi ... -
在QT中通过摄像头动态显示图片 .
2012-01-04 09:49 1916Camgui::Camgui(QWidget *parent, ... -
脚本打包大量文件学习
2011-12-19 09:33 773TARGET_DIR=$PWDcd /list=`cat &l ... -
QT 同时支持鼠标和触摸屏
2011-12-17 12:36 1651现在 如果我要使用鼠标导入环境变量export QWS_M ... -
Qt中Qstring,char,int,QByteArray之间到转换
2011-12-17 12:31 1142各种数据类型的相互转换char * 与 const char ... -
QT Creator的style sheet的几种用法(QT Creator)(StyleSheet)(样式)(QT4.7)(用法)
2011-12-10 20:16 1851摘要: QT Create中,对butt ... -
QT学习笔记(QT4.7)(笔记)
2011-12-10 20:16 1884摘要: 由于 ... -
QT 4.7支持中文(QT4.7)(中文)(makeqpf)
2011-12-10 20:16 2030摘要: QT4.7.0在移植到开发板上的 ... -
QImage变暗
2011-12-16 14:50 1078_image = QPixmap::grabWindow ... -
Qt/Embedded动态旋转屏幕
2011-12-10 20:16 1099距离上次发博文已经有 ... -
如何在QT下执行shell或外部程序
2011-12-10 20:17 1987摘要: 通常,我们运行shell程序都是在终端里进行的, ... -
linux嵌入式qt的屏幕旋转与字体大小问题
2011-12-16 14:50 2379【1、与qt程序显示文字大小有关的两项】 export ... -
改变QMessageBox的大小
2011-12-16 14:50 1005创建一个QMessageBox: QMessageBox m ... -
QT坐标变换
2011-12-09 09:18 1039------------------------------ ... -
QT画对话框窗口圆角
2011-12-09 09:16 1544QPainterPath path; QRectF rec ...
相关推荐
总之,解决QSettings中文乱码问题的关键在于使用正确的编码方式。通过指定UTF-8编码,我们可以确保在不同操作系统和语言环境下,QSettings都能正确处理中文数据。在实际项目中,根据需求和环境选择合适的编码策略,...
本文将详细介绍如何使用Qt库中的`QSettings`类来处理`.ini`文件,以及解决中文字符串在读写过程中可能出现的乱码问题。 `QSettings`是Qt提供的一个高级接口,用于存储和检索应用程序的配置数据。它支持多种存储格式...
在Qt环境下,开发者可以利用`QSettings`类将拼音与汉字的对应关系保存到配置文件中。 - **维护更新**:随着语言的发展变化,新的词汇和发音不断出现,拼音字库需要定期更新以适应这些变化。 #### 四、拼音字库的...
这篇博客文章主要介绍了如何使用QT库中的QSettings类来处理.INI文件的读写操作。 首先,我们需要理解.INI文件的结构。它是初始化文件的简称,最初在Windows系统中广泛使用,但现在也被其他操作系统采用。这种文件由...
在Qt中,可以使用QSettings类来读取和写入配置文件,通常这些配置文件是.ini格式的。下面将详细解释如何在Qt中操作ini文件。 1. **QSettings类介绍** QSettings类是Qt提供的一个接口,用于存储和读取应用程序的...
以上是对"Qt-class.rar"压缩包中提及的Qt常用类和相关知识点的详细解析,这个文档应该能为Qt开发者提供中文查询和学习的便利。通过理解和掌握这些核心概念,开发者能够更高效地利用Qt构建功能丰富的跨平台应用。
每个.QM文件对应一个特定的语言,比如“zh_CN.qm”代表简体中文,"en_US.qm"代表美式英语等。 要实现语言动态切换,我们需要以下步骤: 1. **创建翻译文件**:首先,你需要为每种语言创建一个.ts文件,其中包含...
上面的代码示例中,我们使用QSettings来保存用户选择的语言。 7. 处理翻译不足的情况: 如果翻译文件中没有对应字符串,Qt会回退到原始(通常是英文)字符串。因此,确保所有的字符串都被翻译是非常重要的。 通过...
- **信号与槽**: 信号是对象之间通信的方式之一,当特定事件发生时发出;槽则是可以连接到信号的对象的函数。 - **常用控件**: 包括按钮(QPushButton)、标签(QLabel)、文本框(QLineEdit)、列表框(QListWidget)等。 ...
在实际开发过程中,还可以结合Qt的其他组件和服务,如QSettings用于保存用户的语言偏好,以便在下次启动时自动加载。同时,了解和运用Qt的错误处理机制,如异常处理和日志记录,能够帮助你编写出健壮的应用程序。
- **读写注册表(Registry)**:在Windows系统中,可以通过QSettings类访问注册表,保存用户偏好设置,如默认字体、大小等。 - **右键菜单汉化**:可以使用Qt的翻译机制,如Qt Linguist,将英文资源文件翻译成中文...
2. `QAction`用于创建菜单项和工具栏按钮,它们可以与槽函数连接以响应用户操作。 3. `QMenu`和`QToolBar`构建用户界面的菜单栏和工具栏。 4. 可能使用`QSettings`保存用户的语言选择,以便在下次启动应用时自动恢复...
这个名为"zhSwitchEn.rar"的压缩包文件,根据描述,包含了实现Qt应用程序中文与英文之间切换的源代码。在实际的多语言应用开发中,这样的功能对于拓展应用的全球市场至关重要。 首先,我们要理解Qt中的国际化(i18n)...
第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身消失而 后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们...