1.总结---tr()和QTextCodec对象
2015-10-16 11:32
435 查看
[b]1. 关于Qt 中的tr()函数-------http://tscsh.blog.163.com/blog/static/200320103201310213312518/[/b]
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:
(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr
(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:
(2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)
(2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包);
注意哦,如果你正在用tr包裹中文字符,却不属于(2b),那么,这是个信号:
你在误用tr
你需要的是QString,而不是tr
tr 是做什么的?下面二者的区别是什么?
tr是用来实现国际化,如果你为这个程序提供了中文翻译包(其中hello被翻译成中文"你好"),那么text1的内容将是中文"你好";如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。
tr是经过多级函数调用才实现了翻译操作,是有代价的,所以不该用的时候最好不要用。
----------------------意味着,当你使用tr()时,就需要实现提供语言包,比如这样的代码
[b]2. QTextCodec对象---http://my.oschina.net/michaelbirdliu/blog/12649[/b]
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:
(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr
(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:
(2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)
(2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包);
注意哦,如果你正在用tr包裹中文字符,却不属于(2b),那么,这是个信号:
你在误用tr
你需要的是QString,而不是tr
tr 是做什么的?下面二者的区别是什么?
QString text1 = QObject::tr("hello"); QString text2 = QString("hello");
tr是用来实现国际化,如果你为这个程序提供了中文翻译包(其中hello被翻译成中文"你好"),那么text1的内容将是中文"你好";如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。
tr是经过多级函数调用才实现了翻译操作,是有代价的,所以不该用的时候最好不要用。
----------------------意味着,当你使用tr()时,就需要实现提供语言包,比如这样的代码
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));//在代码中可以使用中文
[b]2. QTextCodec对象---http://my.oschina.net/michaelbirdliu/blog/12649[/b]
//关于QTextCodec对象: // 该对象主要用于非Unicode编码数据与Unicode编码数据之间的转换,例如: //假设现在有一个采用俄国的KOI8-R编码格式的字符串encodedString,现在将它转换成Unicode
QByteArray encodedString = "Hello"; QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); QString string = codec->toUnicode(encodedString);
//上述操作完成后,string里存储的就是Unicode编码的字符串了 //相反的过程:
QTextCodec *codec = QTextCodec::codecForName("UTP-8"); QByteArray encodedString = codec->fromUnicode(string); //UTF-8是中文编码
//操作完成后,encodedStirng里存储的就是从Unicode转换来的UTF-8编码的字符串了 //上述代码也实现了从KIO8-R到UTF-8的转换
相关文章推荐
- QTreeView类和相关类的应用记录
- QT+cmake+opencv
- QT开发小技巧-窗口处理(一)
- PyQT信号槽_学习笔记 (Signals/Slots)
- 基于 Qt的聊天工具
- PyQt的signal 和 solit的补充
- SPOJ QTREE(树链剖分)
- PyQt 界面控件常用积累
- QT5入门之12 - QDebug输出调试信息
- pyqt 中生成二维码的代码模块
- QT5入门之12 - 禁止改变窗体大小
- QT5入门之11 - 工具栏
- QT5入门之10 - 启动程序失败,路径或者权限错误
- Qt 中使用智能指针
- pyqt4中对话框模态和非模态
- QT5入门之9 - 菜单栏
- QT5入门之8 - 定时器
- 【Qt】调用WindowsMediaPlayer进行视频播放=文章未整理=
- qt窗口部件的布局
- Qt中Model/View