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
Linux下Qt4与qt5的程序使用输入法(ibus与fcitx)不冲突的更多相关文章
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- linux 下检查java jar包 程序是否正常 shell
linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...
- Linux下如何让jar包程序在后台一直执行
Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...
- 在Linux下,如何分析一个程序达到性能瓶颈的原因
0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...
- Linux下使用vim编辑C程序
这几天在系统能力班自学linux,加上最近大数据课上开始使用linux,我在这里总结一下,linux下使用vim编辑c程序的一些问题. 大数据课上是直接使用micro来编辑的,我这里只是简单的说明一下 ...
- 在Linux下使用linuxdeployqt发布Qt程序
一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...
- Linux下通过.desktop 文件创建桌面程序图标及文件编写方式(Desktop Entry文件概述)
Linux下通过.desktop 文件创建桌面程序图标及文件编写方式 1.Desktop Entry文件概述:在 Windows 平台上,用户可以通过点击位于桌面或菜单上的快捷方式轻松打开目标应用程序 ...
- linux下对qt编写的程序进行部署
当我们完成程序设计之后,需要将可执行程序交付客户,而运行环境里面可能是没有相关支持库的,这个时候就涉及到部署的相关问题.对于我们在Linux下基于QT编写的图像处理程序,我们采用linuxdeploy ...
- Linux下PHP与普通C程序通信
Linux下的普通C程序之前可以使用FIFO(有名管道来进行进程间通信,因为这个管道以一个文件的形式存在于文件系统上,因此只要能读写这个文件就可以实现进程间通信. 首先使用mkfifo命令有文件系统上 ...
随机推荐
- CocoaPods on Xcode 6 and Yosemite
老子今天又给环境跪了..... cocoapods 在升级完新系统以后无法工作 解决cocoapods 在 mac 10.10下报错 错误例如以下. /System/Library/Framework ...
- 改ucosii的中断禁止和恢复代码,这是一个荒谬的错误【 mrs msr】
ucosii原来的禁止中断以及恢复中断的代码是最简的,但是使用之前,必须声明一个固定名为 OS_CPU_SR cpu_sr 的变量,吊在那里感觉很怪. ;********************* ...
- DP HDIJ1421 搬宿舍
Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...
- HDU-1664-Different Digits(BFS)
Problem Description Given a positive integer n, your task is to find a positive integer m, which is ...
- HDURevenge of Segment Tree(第二长的递增子序列)
HDURevenge of Segment Tree(第二长的递增子序列) 题目链接 题目大意:这题是求第二长的递增子序列. 解题思路:用n^2的算法来求LIS,可是这里还要记录一下最长的那个序列是否 ...
- 【JSP】JSP与oracle数据库交互案例
************************************************************************ ****原文:blog.csdn.net/clark_ ...
- SQL 教程
SQL 教程 http://www.w3school.com.cn/sql/
- 利用Winscp,Putty实现Windows下编写Linux程序
本文讲的方案实现以下功能:利用winscp和putty的脚本功能,实现在Window平台上编写代码,上传到Linux进行编译,然后取编译结果.需要用到3个文件,分别如下: (1) synchroniz ...
- 基于visual Studio2013解决面试题之1207堆排序
题目
- bootstrap datatable项目封装支持单选多选
自己在开发项目是根据自己的项目后台框架封装的jquery datatable插件基本上能集成到任何项目中使用,当然封装的还不够完美,给大家学习 调侃 使用介绍:query_dataTable({tab ...