• 14979阅读
  • 2回复

如何让QT显示中文 [复制链接]

上一主题 下一主题
离线twicave
 

只看楼主 倒序阅读 楼主  发表于: 2008-11-15
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
这种国际化的工作需要明确以下几件事:

1.源代码文件的编码方式是什么?
        对于我的版本来说,所有的工作都是在Red Flag 5.0用 Vim编写的,查看了一下位于主目录(~)下的.vimrc,并做了一些调试工作,发现vim采用的是gb2312模式.

2.QT支持的codec转换.
        因为你的文件编码是gb2312的.那么,必须要让QT知道这一点.方法是:
      1)给相关的控件赋值时采用 QObject::tr("")包裹起来.QT对于tr函数的传入参数可以设置一个自定义的codec,一般而言,会以西方常用的字符集ISO 8859-1来对待这些参数,这显然与我们的愿望不符.
      2)在main函数创建app对象后马上调用:
            QTextCodec::setCodecForTr( QTextCodec::codecForName("GB2312") );
          这条语句执行完毕后,后续的tr调用,都会使用GB2312作为参数的默认字符集.

3.最后一步.
漫游到开发板的font目录,先把所有的字符文件都转移走,只保留一个unicode大字符集的字体文件,可以是任意一种,任意的名字,放在font目录下.(不知道font放在哪里的同志搜索一下论坛就可以找到)

4.成功.



后续工作:
1.需要进行字体裁减
2.需要提供给用户几种规格的字体.
这些以后再说.
离线yleesun

只看该作者 1楼 发表于: 2008-12-18
我用了QTextCodec::setCodecForTr( QTextCodec::codecForName("GB2312") );设置字符集,但是在没有装qt环境的机子上,只有release版本的中文显示正常,debug版本的却显示乱码。
离线yleesun

只看该作者 2楼 发表于: 2008-12-18
查找乱码问题
最终终于明白:要解决现实中文问题的所需工作:
1.在主函数中设置编码格式:
            QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
2.设置解码dll路径:需要qcncodecs4.dll和qcncodecsd4.dl两个dll,用于解决debug和release版本下的乱码问题。l
快速回复
限100 字节
 
上一个 下一个