【Qt移植到linux】问题 qt界面无法输入中文,中文不显示,乱码等问题


我的系统是fedora15英文环境,qt4.7.4
问题1、开始的时候无法输入中文,无法切换输入法
问题2、qt界面中的按钮等中文不显示,这是为什么呢
浪费了我好多天,参考了网上好多资料。才最后解决前面的两个问题。

【Qt移植到linux】问题7 qt界面中文不显示,乱码等问题 - 柳北风儿 - 柳北风儿~~~~~~~欲宇仙炅
 
 

解决方法:
1、通过下面方法可以实现在qtcreator输入中文,切换输入法:
      1)、首先要安装ibus输入法《fedora中安装IBus的中文输入法(pinyin)》

2)、安装IBus-qt4 (fedora15是自带的)

yum install ibus-qt4

3)、终端输入:vi ~/.profile ,在.profile中添加一下内容。(也可以在系统环境变量:/etc/profile中添加)。关于配置环境变量的知识,参考《Sheell配置文件 环境变量设置》

export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export ibus &
export LC_CTYPE=zh_CN.utf8

 4)、重启就ok了。

解释:
/etc/X11/xinit/xinput.d/ibus.conf
【Qt移植到linux】问题7 qt界面中文不显示,乱码等问题 - 柳北风儿 - 柳北风儿~~~~~~~欲宇仙炅
      如果未安装 ibus-qt, QT_IM_MODULE 会自动设置为 xim,所以还是可以了录入中文。而 xim 又是配置为使用 ibus。
所以,如果未装 ibus-qt,GTK程序会直接使用ibus, QT程序会通过xim使用ibus。

2、通过下面方法可以解决qt界面运行后,无法显示中文

a、直接在qt源码目录下configure出错
经过网上的一番搜索,发现是缺少fontconfig造成的,于是重新configure:

#./configure -fontconfig

b、在fontconfig下面make出错
问题又来了,configure未通过,提示Fontconfig未通过,于是进入/config.tests/x11/fontconfig目录,执行make,发现缺少freetype相关的头文件,首先保证freetype开发库已经安装:

#yum install freetype
#yum install freetype-devel 

再次在这里make,还是出错,发现缺少fontconfig开发库,于是

#yum install fontconfig-devel

再次make,不再出错。
错误情况介绍:

错误1: ft2build.h: No such file or directory

命令yum install fontconfig-devel问题解决。

错误2: /usr/include/ft2build.h:56: fatal error: freetype/config/ftheader.h: No such file or directory

命令 ln -s /usr/include/freetype2/freetype/ /usr/include/freetyp问题解决。

c、然后进入Qt源代码目录,再次执行

#./configure -fontconfig

通过。
d、发布带中文字库的qt

#gmake
#gmake install

完成。

运行结果如下:

【Qt移植到linux】问题7 qt界面中文不显示,乱码等问题 - 柳北风儿 - 柳北风儿~~~~~~~欲宇仙炅

这个时候终端输入:

#fontconfig &

查看,font标签窗口,里面已经有中文字库支持了

【Qt移植到linux】问题7 qt界面无法输入中文,中文不显示,乱码等问题 - 柳北风儿 - 柳北风儿~~~~~~~欲宇仙炅
 
备注1:
在linux上,qt中其实不需要更改编码,就可以正常显示中文。
既不需要在main函数中加入如下代码,也不需要在qtcreator选项中配置文件编码。qt默认的UTF-8 有BOM的格式,已经很好的解决了中文乱码问题。

 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章