环境:Qt4.7.4 +fedora15英文系统
描述:目前将win7上面的qt项目移植到Fedora15上。编译后,一开始qtcreator无法输入中文,后来修改环境变量后,可以输入中文了。但是还是无法显示中文。
解决过程:
尝试1:
将fedora设置成中文系统后,将ibus设置成pinyin输入法,然后修改/etc/profile
添加下列文字:
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export ibus &
export LC_CTYPE=zh_CN.utf8
后面就可以在qtcreator中打入汉字了。但是编译运行后,还是无法显示中文呢?
尝试2:加入中文编码
// 以下部分解决中文乱码
QTextCodec *codec = QTextCodec::codecForName("gb2312");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
// 以上部分解决中文乱码
也无法显示中文。
看来还是我系统环境支持中文有问题啊?
请各位大侠支招帮忙解决一下linux下中文无法显示的问题啊。

qt 中文显示 linux 中文输入法 qtcreator
------解决方案--------------------
看了一下你的总结文章,还不完全,补充一下:
前面freetype是解决Qt Creator显示的问题。
后面看你的备注说Linux下面源码默认是utf8,不需处理textcodec, 这个说法是不完整的。
如果你是直接在designer里面写的中文是不需要的,因为Qt会对这些文字作translate,并且显示的指定字符编码为UTF8,这样程序才能够识别,具体代码可参见ui文件生成的ui_XXXX.h.
Qt5以前的版本,QString, tr()都是默认源字符编码为lating-1(近似于ascii),所以出现在源码中的""和tr("")都是默认不支持中文到QString的转换的,这些文本必须指定全局的setCodecForCStrings之似的函数,或者在局部调用fromutf8()之类的函数调用才能正确转码到QString里。
注: QString里存贮的其实是utf16编码.
Qt5以后会把这个默认lating-1改成默认utf8,用来简化上述的处理。