嵌入式下Qt的中文显示

2019-07-12 22:12发布

不管是以前接触的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文件