天天看点

嵌入式下Qt的中文显示

不管是以前接触的winCE系统还是现在的Linux,用Qt都会碰到显示中文的问题。首先显示框框是没有字库,显示乱码才是编码的问题

没有字库的话,在对应的目录里加入字库就行,显示乱码就要在程序里面设置下:

Qt的QTextCodec是专门用于文字编码的

1.

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));      
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));      
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));      

这里设置了本地编码为GBK,不过我设置GBK18030却是乱码,这两个的标准可能还不一样,所以如果GBK显示乱码,可以试试UTF-8,总之是其中一个

2.如果是接收的是GBK编码的二进制码,则需要用宽字节QChar来存储,将一个汉字编码的2个字节存到一个QChar中,可以通过fromUnicode转成string显示

将Qt国际化也总结在这里:

Qt的国际化是通过Qtranslate这个类来实现的,具体怎么做网上也有很多例子,这里就简单说一下好了,主要是以下几步

注意:在代码中将你想要国际化的地方用tr("")来实现

1、在.pro文件中添加支持

TRANSLATIONS=english.ts      
需要切换几种语言就要有几个ts文件,建议源码中最好是用英文,因为中文的那些编码问题搞来搞去很是头疼      
2、用命令行进入工程所在目录输入      
lupdate ***.pro      
就会在工程目录下生成一个english.ts的文件      
3、用Qt自带的工具Linguist打开,将里面的英文替换成对应的中文,或者可以用Editplus等文件编辑工具打开,ts文件是xml形式的,很容易看懂      
4、改好后,在命令行中输入      
lrelease english.ts      
就会在目录下生成一个english.qm的文件,在代码中加入      
QTranslator myappTranslator;      
if(!myappTranslator.load(":/english.qm"))      
qDebug("load error ");      
a.installTranslator(&myappTranslator);      
如果想切换别的语言,就需要编辑对应的ts文件      

继续阅读