Linux下Qt4与qt5的程序使用输入法(ibus与fcitx)不冲突

这篇文章引用了较多其他作者的内容,也忘记引用的出处了,只能感谢了。以下转入正题。

 

对于qt5.5,要下载libqt库源码自己编译,参考解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题

 

Linux下有两种输入法,分别是ibus和fcitx,如果喜欢搜狗输入法的话,需要安装fcitx.

首先说第一种输入法ibus.

 

一、ibus

安装步骤如下:

第一:安装IBus框架,

sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4

启动IBus框架,在终端输入:

im-switch -s ibus

安装完IBus框架后注销系统,保证更改立即生效。

注意,这里可能会出错,提示如下:no configuration file “ibus” exists.解决办法是修改im-switch的配置文件,步骤如下:

$ cd /etc/X11/xinit/xinput.d/ $ sudo cp default ibus $ sudo vim ibus

在Vim中编辑配置项:

XIM=ibus XIM_PROGRAM=/usr/bin/ibus-daemon XIM_ARGS="—xim"

 

 

创建好配置文件之后再重新启动im-switch,就可以发现这回能够选择到ibus,而括号里面的就是我们的配置文件名,通过配置文件将设置指向了ibus的守护进程ibus-daemon,这样每次X在启动的时候就能自动关联该输入法,如下:

 

 

第三步:安装拼音引擎
 

有下面几种常用选择:

IBus拼音:sudo apt-get install ibus-pinyin

IBUS五笔:sudo apt-get install ibus-table-wubi

谷歌拼音输入法:sudo apt-get install ibus-googlepinyin

Sun拼音输入法:sudo apt-get install ibus-sunpinyin

第四步:设置IBus框架  

ibus-setup

设置IBUS

第五步:环境变量设置

通常情况下,IBus图标(一个小键盘)会出现在桌面右上角的任务栏中。有时候这个图标会自行消失,可使用以下命令,找回消失的IBus图标:

ibus-daemon -drx

 

要启用输入法,还需要配置环境变量,具体如下(IBus支持 XIM 协议及 Gtk IM 模块以及 Qt IM 模块):

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

 

要启用输入法对qt的支持,步骤如下:

/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so

将该文件复制到

qt安装目录/Tools/QtCreator/bin/plugins/platforminputcontexts(作用是使得qtcreator开发环境支持输入法)

qt安装目录/5.3/gcc_64/plugins/platforminputcontexts(个人猜测是使得用编译器编译出来的qt程序也支持输入法)

如果qt开发出来的程序不支持输入法,那么可以在程序所在的目录创建platforminputcontexts目录,然后把libibusplatforminputcontextplugin.so拷贝进去,发布的时候与可执行程序一起发布,如果还是不行,重启电脑,在重新运行可执行程序。

开机启动Ibus

System >> Preferences >> Startup Applications
Click the button: Add
Name: ibus daemon
Command: /usr/bin/ibus-daemon -d
Comment: start ibus daemon when gnome start

 

System >> Preferences >> Startup Applications
Click the button: Add
Name: ibus daemon-open
Command: /usr/bin/ibus-daemon -drx

Comment: start ibus daemon when gnome starting

 

常用命令:

im-switch -s ibus   #启动ibus框架

ibus-setup     #设置ibus框架

ibus-daemon -drx  #通常情况下,IBus图标(一个小键盘)会出现在桌面右上角的任务栏中。有时候这个图标会自行消失,可使用以下命令,找回消失的IBus图标

im-switch   #设置系统输入法

 

$ sudo killall ibus-daemon   #重启ibus

$ sudo ibus-daemon -d –xim  

 

 

 

二、fcitx输入法:

 

1、安装fcitx for Qt5动态库,从而得到需要的依赖库

执行如下命令:sudo apt-get install fcitx-libs-qt5

安装fcitx输入法前端:sudo apt-get install fcitx-frontend-qt5 

 

2、配置Fcitx环境变量:

export XMODIFIERS=@im=fcitx  

export XIM=fcitx  

export XIM_PROGRAM=fcitx  

export GTK_IM_MODULE=fcitx  

export QT_IM_MODULE=fcitx

 

3.1让qtcreator开发环境支持搜狗输入法:

   进入Qt安装目录的下面路径:{path}是Qt的安装目录cd{path}(可用命令dpkg -L 包名看文件安装路径)

/Qt5.3.1/Tools/QtCreator/bin/plugins/platforminputcontexts 

   拷贝fcitx输入法支持文件:执行如下命令 将支持文件copy 到上文的目录sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so . (对于32位系统,对应的目录为/usr/lib/i386-linux-gnu/qt5/plugins/platforminputcontexts/

)

为刚才的文件添加可执行命令: chmod+x  libfcitxplatforminputcontextplugin.so  重启Qt就可以使用搜狗输入法了!!如果还是不行,重启电脑,再重新打开qtCreator就可以了。 但是 原来的ctrl+空格是代码提示快捷键,现在用于切换输入法。这也好解决:
Qt creator--->工具--->选项--->环境--->键盘。然后找到Complete This修改之即可

3.2让qt5开发出来的程序也支持搜狗输入法:

   发布程序时同时把拷贝到程序所在目录,需要在工程目录创建platforminputcontexts目录,然后把/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so拷贝到platforminputcontexts目录,与程序一起发布,就可以让qt开发出来的程序在其他机器也能支持fcitx输入法了,如果还是不行,重启电脑,重新运行可执行程序。

   

   

 

 

常用命令:

Im-switch -s fcitx切换当前输入法为fcitx

im-switch -s fcitx -z default  #将fcitx设为默认输入法

 

 

总结

 

qt安装目录下/5.3/gcc_64/plugins这个目录是用qt creator编译出的程序运行时调用插件的目录,所以这个输入法插件要放到这。好像自己在编译出的程序下新建
plugins/platforminputcontexts/目录,再将libfcitxplatforminputcontextplugin.so放进去也是可以的。
qt安装目录下/Tools/QtCreator/bin/plugins/这个目录是qt creator自己调用插件的目录,所以要想在qt creator中输入中文这里也要放一个。
 

测试结果:

测试环境: Linux gdlctech-System-Product-Name 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

 

测试程序(以下程序同时运行时均可以正常使用输入法,不冲突):

qt4.8.5(用自己系统安装的

qtcreator以及其开发出来的程序)

qt5.3.1(32位的qtCreator可执行程序以及用它开发出来的程序)

Qt4.7.4(金山wps)

QQ程序(应该是qt4的某个版本)

 

注意事项:当ibus和fcitx输入法同时运行时,切换输入法会有冲突!!所以,不要把两种输入法同时运行!!

http://blog.csdn.net/u013281495/article/details/50560817

posted @ 2016-04-07 18:00  findumars  Views(8580)  Comments(0Edit  收藏  举报