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

对于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

Linux下Qt4与qt5的程序使用输入法(ibus与fcitx)不冲突的更多相关文章

  1. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  2. linux 下检查java jar包 程序是否正常 shell

    linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...

  3. Linux下如何让jar包程序在后台一直执行

    Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...

  4. 在Linux下,如何分析一个程序达到性能瓶颈的原因

    0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...

  5. Linux下使用vim编辑C程序

    这几天在系统能力班自学linux,加上最近大数据课上开始使用linux,我在这里总结一下,linux下使用vim编辑c程序的一些问题. 大数据课上是直接使用micro来编辑的,我这里只是简单的说明一下 ...

  6. 在Linux下使用linuxdeployqt发布Qt程序

    一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...

  7. Linux下通过.desktop 文件创建桌面程序图标及文件编写方式(Desktop Entry文件概述)

    Linux下通过.desktop 文件创建桌面程序图标及文件编写方式 1.Desktop Entry文件概述:在 Windows 平台上,用户可以通过点击位于桌面或菜单上的快捷方式轻松打开目标应用程序 ...

  8. linux下对qt编写的程序进行部署

    当我们完成程序设计之后,需要将可执行程序交付客户,而运行环境里面可能是没有相关支持库的,这个时候就涉及到部署的相关问题.对于我们在Linux下基于QT编写的图像处理程序,我们采用linuxdeploy ...

  9. Linux下PHP与普通C程序通信

    Linux下的普通C程序之前可以使用FIFO(有名管道来进行进程间通信,因为这个管道以一个文件的形式存在于文件系统上,因此只要能读写这个文件就可以实现进程间通信. 首先使用mkfifo命令有文件系统上 ...

随机推荐

  1. 以正确的方式开源 Python 项目

    以正确的方式开源 Python 项目 大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清 晰和无痛.我不是 ...

  2. block 解析 - 静态变量

    静态变量 上一篇 我们了解了block全局变量的使用,静态变量和全局变量一样,可以直接在block内部使用,也可以在block内部修改 引用官方文档: Global variables are acc ...

  3. AFNetworking2.5使用2

    链接地址:http://blog.csdn.net/abc4715760/article/details/46521111 官网下载2.5版本:http://afnetworking.com/ 此文章 ...

  4. Python中的循环与跳出

    --start-- for循环: for i in range(3): user_input = input("Your username:") passwd = int(inpu ...

  5. PredictionIO Open Source Machine Learning Server

    PredictionIO Open Source Machine Learning Server Build Smarter Software with Machine Learning Predic ...

  6. ADO.NET 对象 结构图

  7. Python 基础编程

    Python 打印九九乘法表: for i in range(1,10): for j in range(1,i+1): print j,'*',i,'=',j*i,' ', print '\n' P ...

  8. 正确处理Windows电源事件

    简介为系统挂起与恢复而进行的应用准备步骤 曾几何时,当您正要通过应用提交或发布一些重要数据时,突然遇到一些急事需要处理,而且会耽误很长时间.当您完成任务回到电脑前时,发现电脑已经自动进入 了挂起状态, ...

  9. windows的消息传递--消息盒子(超详细EM_UNDO等消息)

    使用delphi的消息机制可以方便操作后台,其中重要的就是sendmessage()函数.下面讲解一下这个函数 function SendMessage(hWnd: HWND; Msg: UINT;  ...

  10. tomcat下部署activemq(转)

    转自:http://marshal.easymorse.com/archives/1414 activemq可以单独部署和执行,比如类似ActiveMQ的最简单应用中提到的安装和执行方式.但是有时候需 ...