QT1766怎么加入全球购入

Hi,这是的腾讯微博,立即登录并收听,别错过TA的精彩内容!
们天涯海阁公会自今会长久入住到你这里来,常客哟,请关注下,QT:1766 欢迎大家的加入! 天涯海阁,有你更精彩~!
正在加载...
Copyright & 1998 - 2014 Tencent. All Rights Reserved回音强势入驻穿越火线CF火线魔盒战队招募
  大家好,我是你们的好朋友回音。在这里感谢所有的朋友关注本文章。火线魔盒走进QT得到了许多玩家的大力支持,魔盒QT语音ID:601766也为玩家准备了丰厚的礼品来感谢支持我们魔盒。那么回音是玩黑区想组织一些朋友在QT一起比赛.娱乐.互相的交流CF心得,好让自己充实CF。如果你是魔盒的一员,那么你的力量就会成就魔盒的辉煌。在这里回音代表火线魔盒感谢一直以来支持我们的朋友。想加入火线魔盒黑区战队的朋友。
  请到QT语音ID601766或者黑区QQ群:来找回音
  (魔)实力打造魔盒王者绝非偶然(火)
  && (盒)我们用最火爆的方式欢迎你的加入(线)
  &&&& (火)①次火魔①世兄弟永远的情谊永久的记忆(魔)
  &&&&&& (线)《火线魔盒》我们期待你的加入QT:601766(盒)
穿越火线视频
我有话要说---------------------------------
人之所以能,是相信能
,上班族自己的论坛。
大家多支持阿,我自己做的,嘿嘿
----------------------------------------
前些日子,被编码折磨了一段时间,总结一下Qt中的编码。
【Qt 编码简单实验】
首先,Qt中得QString
类对字符串进行了封装,其内部使用Unicode对传入的串进行编码。这样一来,QString就可以处理绝大多数的国际语言。将QString中的字符
根据语言翻译的过程,也就是Qt
的Translater针对程序中使用含有的tr(&XXXXX&),进行翻译的过程。由于QString的Unicode编码,和本地系统的编码不一定
是一致的(比如系统采用的GB2312的编码)。这样的话,就不能直接使用类似QString
str(&汉字&)这样的方法来存储本地的汉字,是有问题的。
&系统是使用GB2312编码的&
QString str(&汉字&);
std::cout && &Straight Output:& && str &&
std::cout && &Local Output:& && str.local8Bit() &&
std::cout && &Unicode Output:& && str.unicode() &&
结果如下:
汉字 (正确)
@#$% (乱码)
@#$% (乱码)
QString str = QString::fromLocal8Bit(&汉字&);
std::cout && &Straight Output:& && str &&
std::cout && &Local Output:& && str.local8Bit() &&
std::cout && &Unicode Output:& && str.unicode() &&
结果如下:
@#$% (乱码)
汉字 (正确)
@#$% (乱码)
先说试验1,因为str采用Unicode编码,中文实际上没有经过任何的编码转换直接存到str中,所以存入的Unicode已经是错误的(GB编码的
字符按照Unicode存的)。但是为什么第一个会正常显示呢?因为标准输入输出是不进行任何的编码解码工作的,字符串由本地系统读取时使用本地的字符集
GB2312进行解码,因为存入的字符串&汉字&正好是GB2312编码的,正好得到了正确地结果!这有点负负得正的味道!QString只是充当了一个
容器,里面存的是不正确的值。
对于试验2来说,使用fromLocal8Bit()函数,实现了从本地字符集GB到Unicode的转
换,所以存在QString中的字符串是经过转换的正确编码。输出的时候,要正确显示,只能是再转为本地的字符编码,也就是使用local8Bit()转
换。由于存入QString的是正确的值,就可以进行包括国际化在内的许多工作!( 注意本地LANGUAGE环境变量!)
【Qt国际化的问题】
文本显示上,Qt 使用了Unicode
作为内部编码,为了程序的国际化,通常我们在文本显示的地方不直接输入本地字符,用英文代替,比如要编写一中文界面的 Qt
程序,应该在程序中使用英文,程序编写完成后,把文本提取出来翻译。对于需要翻译的地方,首先是在该文本处用tr()函数标识,同时制作出.qm信息文
件,并在程序中加入QTranslator即可。
比如我们在某一程序中有如下语句: setCaption(tr(&main window&)) 为了显示中文,有两种方法:
1. 修改工程文件,加上TRANSLATIONS = xxx.ts
2. lupdate 工程文件名
3. 用linguist编辑刚生成的xxx.ts文件并保存
4. lrelease 工程文件名 xxx.qm
5. 在main.cpp中加入QFont font1(&unifont&,16,50,FALSE,QFont::Unicode);
6. qApp-&setFont(font1);
7. QTranslator *translator = new QTranslator(0);
8. translator-&load(&xxx.qm&,&.&);
9. qApp-&installTranslator(translator);
1. findtr 文件名(通常为CPP文件) & xxx.po
2. 编辑po文件,其中charset需由iso-8859-1改为GB2312,然后将&main window&翻译成&主窗口&
3. msg2qm &scope zh_CN.GB2312 xxx.po xxx.qm
4. 在main.cpp中加入QFont font1(&unifont&,16,50,FALSE,QFont::Unicode);
5. qApp-&setFont(font1);
6. QTranslator *translator = new QTranslator(0);
7. translator-&load(&xxx.qm&,&.&);
8. qApp-&installTranslator(translator);
有时我们只是提供给本地用户使用,无需国际化,QT提供这一支持,在QT中有许多本地字符集同unicode的转换引擎,他们皆为QTextCodec的派生类,如QGbkCodec、QJisCodec, QHebrewCodec等。如:
QFont font1(&unifont&,16,50,FALSE,QFont::Unicode);
qApp-&setFont(font1);
QString caption=&主窗口&;
QTextCodec *gk_codec=QTextCodec::codecForName(&GBK&);
setCaption(gk_codec-&toUnicode(caption));
从上面可以看出,使用转换引擎可以轻松实现中文显示,简要步骤如下:
1. 修改main.cpp文件,将字体改为unifont
QFont font1(&unifont&,16,50,FALSE,QFont::Unicode);
qApp-&setFont(font1);
2. 在想汉化的内的头文件中加入QTextCodec指针变量和转换函数QString mytr(char *)
QTextCodec*
QString mytr(const char *);
3. 在想汉化的类的实现文件中,修改类构造函数,加入:
gbk=QTextCodec::codecForName(&GBK&);
4. 在想汉化的类的实现文件中,添加mytr函数代码
QString Form1::mytr(const char* chars) {
return gbk-&toUnicode(chars,strlen(chars));
5. 在想汉化的类的实现文件中,用&mytr&替换&tr&
注:如果将codec成员变量改成QTextCodec派生类变量,编译将通不过,比如将QTextCodec*改成QGbkCodec*编译将报告此处有语法错误。
下面是相似的用法:
1. 修改***.cpp文件,在顶部加入codec头文件
2. 在***.h文件中,加入mytr()函数声明
QString mytr(char* buffer,int size);
3. 在***.cpp文件中,加入mytr()定义
QString mytr(char* buffer,int size) {
QGbkCodec* gbk=QTextCodec::codeForName(&GBK&);
return gbk-&toUnicode(buffer,size);
4. 在需要显示中文的地方,使用mytr函数即可
5. 修改main.cpp文件,将字体改为unifont
QFont font1(&unifont&,16,50,FALSE,QFont::Unicode);
qApp-&setFont(font1);
备注1:在翻译或转换之前必须将Unicode字体调入,否则显示不出中文,网上相关文章并未提及这一点,如果不显式装载该字体,系统默认的是Latin1,于是汉字显不出来。
备注2:在编译qt/embedded之前,必须修改qconfig-qpe.h配置文件的内容,将与TextCodec相关的宏定义给去掉,否则QTextCodec::codecForName(&GBK&)将返回NULL指针。
备注3:使用findtr命令时可同时查找多个文件的tr(),并将查找结果都放入一个文件内,源文件以空格隔开即可,另外,生成的.po和.qm文件的文件名最好与工程文件名相同!
注4:如果要显示繁体中文,则需要使用QTextCodec::codecForName(&big5&)。获取本地的使用语言,用
QTextCodec::locale(),它返回Qstring变量,通常如果是中文本地的话,通常其值为zh_CN.GB2312和
zh_TW.Big5,根据这个返回字符串,可以加载相应的codec。如果程序只支持一种编码,也可以直接把整个应用程序的编码设置为一个默认的编码标
准,比如系统只需要显示中文和英文,则可以直接设置应用程序的默认编码标准是GBK,如下使用方法:
qApp-&setDefaultCodec( QTextCodec::codecForName(&GBK&) );
QLabel *label = new QLabel( tr(&中文标签&) );
备注5:如果使用本地的字符转换器,可以使用Qstring的静态函数Qstring::fromLocal8Bit(char* buffer,int size),将本地字符串转换成UNICODE字符串,不过要设置好LANGUAGE环境变量。
【QTOpia中文化 】
1) findtr 文件名 & xxx.po
2) 编辑xxx.po文件
3) msg2qm &scope zh_CN.GB2312 xxx.po xxx.qm
4) 拷贝可执行文件到QPEDIR/bin目录
5) 拷贝xxx.po和xxx.qm文件到QPEDIR/i18n/zh_CN目录
6) 进入QPEDIR/apps/Applications目录创建一新.desktop文件
7) iconv &f utf8 &t GB18030 xxx.desktop & xxx1.desktop
8) 编辑xxx1.desktop文件,主要是修改Exec、Icon、Name和Name[zh_CN]四项
9) iconv &f GB18030 &t utf8 xxx1.desktop & xxx.desktop
10) rm &f xxx1.desktop
11) qvfb &depth 16 &
12) cd $QPEDIR/bin
备注1:如果你的系统中有多个qtopia版本,要特别注意QTDIR、QPEDIR、LD_LIBRARY_PATH环境变量
备注2:可按照此方法汉化qtopia自带的应用程序
注3:po文件是中间文件,程序真正需要的是qm文件。iconv是系统自带的内码转换工具,它能将utf8编码的文件转换成gb18030编码的文件,
反之也能,转换这一步必不可少,因为desktop文件缺省是utf8编码的,而我们的redhat linux
7。3中文操作系统用的却是gb18030,所以在编辑器打开前需转换。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:171413次
积分:1818
积分:1818
排名:第8661名
原创:22篇
转载:41篇
评论:36条
(1)(2)(1)(10)(5)(1)(2)(1)(2)(1)(11)(1)(2)(1)(1)(5)(2)(1)(2)(2)(2)(7)

我要回帖

更多关于 怎么邀请好友加入群 的文章

 

随机推荐