解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题
博客专区 > lieefu 的博客 > 博客详情
解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题
lieefu 发表于2年前
解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题
  • 发表于 2年前
  • 阅读 11129
  • 收藏 24
  • 点赞 13
  • 评论 51

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 如何在Qt5中切换汉字输入法,完美解决Qt Creator使用fcitx输入法录入汉字问题,解决办法是自己编译fcitx-qt5,安装部署 libfcitxplatforminputcontextplugin.so

本文档2017年6月1日修正,Ubuntu16.04,Qt5.9.0测试通过

2016年6月8日修正,ubuntu 16.04 Qt5.7.0 以及 Qt5.6.1均测试通过

在Qt5.3之前,我发布过解决办法 解决Qt5 Creator无法切换输入法(fcitx),不能录入汉字问题,Qt5.4以及Qt5.5,旧办法失效,原因是Qt5.4后对之前Qt5版本不再二进制兼容,libfcitxplatforminputcontextplugin.so 需要编译最新的fcitx-qt5。如果你懒得自己编译,可以下载我编译的 libfcitxplatforminputcontextplugin.so

看fcitx-qt5项目的更新日志,是在1.0.3版本时解决的这个问题,写本篇博客时,我git clone到的是1.0.4版本。

编译fcitx-qt需要cmake,安装cmake命令,如果已经安装,请略过。

sudo apt-get install cmake
  • 安装 fcitx-libs-dev

sudo apt-get install fcitx-libs-dev
  • 设置qmake的环境变量:

export PATH="/home/lieefu/Qt5.9.0/5.9/gcc_64/bin":$PATH
  • 下载fcitx-libs源码:

git clone git@github.com:fcitx/fcitx-qt5.git
  • 编译方法:

cd fcitx-qt5
cmake .
make
sudo make install

最后把编译得到 libfcitxplatforminputcontextplugin.so 拷贝到 Qt5.5安装目录的 Tools/QtCreator/bin/plugins/platforminputcontexts

Qt5.6的目录是 Tools/QtCreator/lib/Qt/plugins/platforminputcontexts

大功告成!

 

CMake Error at CMakeLists.txt:8 (find_package):

  Could not find a package configuration file provided by "ECM" (requested

  version 1.4.0) with any of the following names:

    ECMConfig.cmake

    ecm-config.cmake

  Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"

  to a directory containing one of the above files.  If "ECM" provides a

  separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!

遇到上述错误处里方法:

这个页面 https://launchpad.net/ubuntu/+source/extra-cmake-modules/1.4.0-0ubuntu1 下载 extra-cmake-modules_1.4.0.orig.tar.xz

 https://launchpad.net/ubuntu/+source/extra-cmake-modules/5.18.0-0ubuntu1  extra-cmake-modules_5.18.0.orig.tar.xz

解压后:

cd extra-cmake-modules-1.4.0
cmake .
make
sudo make install

 

CMake Error at /home/lieefu/Qt5.5.0/5.5/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message):

  Failed to find "GL/gl.h" in "/usr/include/libdrm".

处里方法:

sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") 

-- Could NOT find XKBCommon_XKBCommon (missing:  XKBCommon_XKBCommon_LIBRARY XKBCommon_XKBCommon_INCLUDE_DIR) 

CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):

  Could NOT find XKBCommon (missing: XKBCommon_LIBRARIES XKBCommon) (Required

  is at least version "0.5.0")

处里方法:

Ubuntu 16.04中可以执行 sudo apt install libxkbcommon-dev 安装

wget http://xkbcommon.org/download/libxkbcommon-0.5.0.tar.xz
tar xf libxkbcommon-0.5.0.tar.xz
./configure —prefix=/usr —libdir=/usr/lib/x86_64-linux-gnu —disable-x11
make
sudo make install

编译libxkbcommon用到yacc,如果没有这个命令,会遇到下面的错误,yacc在 bison软件包中

 sudo apt-get install bison

 

 YACC     src/xkbcomp/parser.c

./build-aux/ylwrap: line 176: yacc: command not found

make: *** [src/xkbcomp/parser.c] Error 127

 

共有 人打赏支持
粉丝 83
博文 108
码字总数 23811
作品 3
评论 (51)
小熊宝宝
79
山的那边有海_
太赞了!不过我在编译库的时候,遇到了你说的所有问题,也是醉了!
winner911
我很早之前试过无效,所有就没用了。没想到现在更新了,回头试一下啊
lieefu

引用来自“winner911”的评论

我很早之前试过无效,所有就没用了。没想到现在更新了,回头试一下啊
我刚把我编译的libfcitxplatforminputcontextplugin.so 百度云空间了,你下载测试下,能用否。
loaden

引用来自“winner911”的评论

我很早之前试过无效,所有就没用了。没想到现在更新了,回头试一下啊

引用来自“lieefu”的评论

我刚把我编译的libfcitxplatforminputcontextplugin.so 百度云空间了,你下载测试下,能用否。
请问是64位版本吗?
一分钟的光头
大神能不能帮忙编译成静态库啊。我不会cmake,不会改cmakelist.txt。
我要libfcitxplatforminputcontextplugin.a(静态库)。请发到943010759@qq.com
一分钟的光头

引用来自“winner911”的评论

我很早之前试过无效,所有就没用了。没想到现在更新了,回头试一下啊

引用来自“lieefu”的评论

我刚把我编译的libfcitxplatforminputcontextplugin.so 百度云空间了,你下载测试下,能用否。
大神能不能帮忙编译成静态库啊。我不会cmake,不会改cmakelist.txt。 我要libfcitxplatforminputcontextplugin.a(静态库)。请发到943010759@qq.com
winner911
我试了,没有效果,我自己编译的也不行,我是linux mint
lieefu

引用来自“loaden”的评论

引用来自“winner911”的评论

我很早之前试过无效,所有就没用了。没想到现在更新了,回头试一下啊

引用来自“lieefu”的评论

我刚把我编译的libfcitxplatforminputcontextplugin.so 百度云空间了,你下载测试下,能用否。
请问是64位版本吗?

是64位的
lieefu

引用来自“winner911”的评论

我试了,没有效果,我自己编译的也不行,我是linux mint

我是在Ubuntu14.04下编译的
winner911

引用来自“lieefu”的评论

引用来自“winner911”的评论

我试了,没有效果,我自己编译的也不行,我是linux mint

我是在Ubuntu14.04下编译的
莫名其妙的成功了,切换了一下ibus输入法,注销后在切换回去fictx,就成功了
loaden

引用来自“lieefu”的评论

引用来自“loaden”的评论

引用来自“winner911”的评论

我很早之前试过无效,所有就没用了。没想到现在更新了,回头试一下啊

引用来自“lieefu”的评论

我刚把我编译的libfcitxplatforminputcontextplugin.so 百度云空间了,你下载测试下,能用否。
请问是64位版本吗?

是64位的
谢谢!看起来依赖libxkb 0.5的版本,我试了你提供的libfcitxplatforminputcontextplugin.so并放对了位置,但不起作用。Qt5.5.0。估计libxkb是动态库。
一朝回首
楼主我下载你的libfcitxplatforminputcontextplugin.so,不起作用啊,我想自己编译来的但是
git clone git@github.com:fcitx/fcitx-qt5.git 下不下来,提示
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
lieefu

引用来自“一朝回首”的评论

楼主我下载你的libfcitxplatforminputcontextplugin.so,不起作用啊,我想自己编译来的但是
git clone git@github.com:fcitx/fcitx-qt5.git 下不下来,提示
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
可能是你没有github账号导致的。请用这个链接下载:https://github.com/fcitx/fcitx-qt5/archive/master.zip
一朝回首

引用来自“一朝回首”的评论

楼主我下载你的libfcitxplatforminputcontextplugin.so,不起作用啊,我想自己编译来的但是
git clone git@github.com:fcitx/fcitx-qt5.git 下不下来,提示
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

引用来自“lieefu”的评论

可能是你没有github账号导致的。请用这个链接下载:https://github.com/fcitx/fcitx-qt5/archive/master.zip
很苦恼啊!到了 wget http://xkbcommon.org/download/libxkbcommon-0.5.0.tar.xz tar xf libxkbcommon-0.5.0.tar.xz ./configure —prefix=/usr —libdir=/usr/lib/x86_64-linux-gnu —disable-x11 make sudo make install 发生错误bash: ./configure: 没有那个文件或目录 怎么办??
boltwang
你好,ubuntu14.04 32bit 只安裝了qtcreator(3.4.2), 编译fcitx-qt5-1.0.1的时候,出现提示错误 fatal error: qpa/qplatformscreen.h: 没有那个文件或目录。指定头文件qt-everywhere-opensource-src-5.5.0后,发现又有变量定义错误。fcitx-qt5-1.0.1是不是 要找对于qt5.5.0 的版本?
shizhao
很详细的教程。我用的是Qt5.5 ,按照教程解决了问题,但没过多久就失效了。从git上得到最新的源码,按照步骤 cmake make makeinstall 就解决了问题。在cmake之前,需要set一下QT5_DIR路径
ruanxinyu
我用UbuntuKylin14.04.3 64位系统测试的,不管是自己编译还是用百度网盘提供的libfcitxplatforminputcontextplugin.so都不行,然后我也参考了http://blog.szm.me/fcitx-with-qt5/的方式,将dbusaddons和widgetsaddons也拷到/opt/Qt5.5.0/5.5/gcc_64/plugins/和/opt/Qt5.5.0/Tools/QtCreator/bin/plugins/目录下发现还是不好用,但是我意外的发现libfcitxplatforminputcontextplugin.so会用到libFcitxQt5DBusAddons.so库,但是默认是到源码下的dbusaddons目录去找该库,所以只要我将自己编译后的源码文件夹删除掉就不好用了,保留则好用
ruanxinyu

引用来自“shizhao”的评论

很详细的教程。我用的是Qt5.5 ,按照教程解决了问题,但没过多久就失效了。从git上得到最新的源码,按照步骤 cmake make makeinstall 就解决了问题。在cmake之前,需要set一下QT5_DIR路径
我试了一下,但是只要把编译之后的源码文件夹删掉之后就不好用了,不知道你的是不是这样
shizhao

引用来自“shizhao”的评论

很详细的教程。我用的是Qt5.5 ,按照教程解决了问题,但没过多久就失效了。从git上得到最新的源码,按照步骤 cmake make makeinstall 就解决了问题。在cmake之前,需要set一下QT5_DIR路径

引用来自“ruanxinyu”的评论

我试了一下,但是只要把编译之后的源码文件夹删掉之后就不好用了,不知道你的是不是这样
对的,再一次删掉了,原来是这个问题
×
lieefu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: