• 31447阅读
  • 14回复

[原创]解决Qt5 Creator无法切换输入法(fcitx),不能录入汉字问题 [复制链接]

上一主题 下一主题
离线jeffreylee
 

只看楼主 倒序阅读 楼主  发表于: 2014-07-03
— 本帖被 XChinux 执行加亮操作(2016-04-19) —
2015年9月12日补充:
由于Qt5.4对之前的Qt5版本不是二进制兼容,导致系统提供的libfcitxplatforminputcontextplugin.so不在能正常工作,起先会导致Qt Creator崩溃,后来崩溃解决,但输入依然切换不出来,fcitx-qt5开发小组在fcitx-qt51.0.3版解决bug,因此解决问题的办法是自己编译最新fcitx-qt5 详细步骤再这里:
解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题



------------------------------------------------------------------------------------------------------------------------
笔者系统环境,Ubuntu 14.04,输入法fcitx下搜狗输入法。
其它非Ubuntu linux发行版,不通过软件源安装Qt5,从Qt官网http://qt-project.org/下载安装包,也存在这个问题。
在Ubuntu下解决方法如下,其它linux发行版解决方法雷同
1.安装fcitx for Qt5动态库
sudo apt-get install fcitx-libs-qt5
注:这一个命令执行完毕后,系统中已经具备基于Qt5的程序的汉字录入环境支持。存在一个奇怪现象是,Qt5所带的Qt Creator依然无法切换输入法,而且刚刚编译的程序,也无法录入汉字,但卸载掉Qt5开发环境后,刚刚编译的程序居然可以切换输入法,录入汉字了。这个现象说明,卸载Qt5开发环境后,同样的程序,使用系统提供的依赖库环境,录入汉字问题消失。问题出在Qt5开发环境缺少fcix for Qt5动态库上面。
2.向Qt5开发环境安装fcitx for Qt5支持
进入 /Qt5.3.1/Tools/QtCreator/bin/plugins/platforminputcontexts 目录发现
官网提供的安装包仅仅有libibusplatforminputcontextplugin.so,对ibus输入法的支持
cd ~/Qt5.3.1/Tools/QtCreator/bin/plugins/platforminputcontexts
cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so .
chmod +x  libfcitxplatforminputcontextplugin.so

上面解决了Qt5 Creator汉字输入问题,新编译的程序运行库环境目录是~/Qt5.3.1/5.3/gcc_64/plugins/platforminputcontexts$
依然执行如下命令
cd ~/Qt5.3.1/5.3/gcc_64/plugins/platforminputcontexts$
cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so .
chmod +x  libfcitxplatforminputcontextplugin.so

离线rpdhunter

只看该作者 1楼 发表于: 2014-10-12
楼主,我也遇到了这个问题,按照你的方法执行了第一步,但第二步执行出错,系统没有这个文件,请问哪里出了问题?
离线asakura

只看该作者 2楼 发表于: 2015-06-16
楼主,我安装您的方法试了之后,打开Qt Creator就一闪而过然后报段错误,我是在64位Debian8下,纠结死了
离线彩阳

只看该作者 3楼 发表于: 2015-07-21
回 asakura 的帖子
asakura:楼主,我安装您的方法试了之后,打开Qt Creator就一闪而过然后报段错误,我是在64位Debian8下,纠结死了 (2015-06-16 09:27) 

因为上面的那个插件不兼容最新的Qt Creator和Qt 5.5。需要重新编译那个libfcitxplatforminputcontextplugin插件才行。我还没有试过,比较麻烦,需要下载Qt Creator的源码才行。
上海Qt开发联盟,热忱地欢迎你的加入!
离线彩阳

只看该作者 4楼 发表于: 2015-09-17
中文问题已经解决了,参考:
http://my.oschina.net/lieefu/blog/505363
上海Qt开发联盟,热忱地欢迎你的加入!
离线彩阳

只看该作者 5楼 发表于: 2015-09-17
这个问题已经解决了,核心是要编译fcitx这个插件。我试了一下,可以用。目前Qt程序都可以进行中文的输入了。
参考:http://www.qtcn.org/bbs/read.php?tid=56908&ds=1&page=1&toread=1#tpc
以及:http://my.oschina.net/lieefu/blog/505363(重要)
上海Qt开发联盟,热忱地欢迎你的加入!
离线彩阳

只看该作者 6楼 发表于: 2015-11-05
5.5.1的这样的插件还和5.5.0的不兼容呢,还得重新编译一下,重新获取XKBCommon这个库。
上海Qt开发联盟,热忱地欢迎你的加入!
离线david4383

只看该作者 7楼 发表于: 2016-01-15
彩阳:5.5.1的搞定输入法了吗?我现在用的5.5.1的不行啊。使用你那个5.5.0的也不行。有没有弄好啊,发个贴子啊。
离线彩阳

只看该作者 8楼 发表于: 2016-01-16
回 david4383 的帖子
david4383:彩阳:5.5.1的搞定输入法了吗?我现在用的5.5.1的不行啊。使用你那个5.5.0的也不行。有没有弄好啊,发个贴子啊。 (2016-01-15 10:02) 

我已经弄好了,现在Ubuntu下输入中文没有问题了。
上海Qt开发联盟,热忱地欢迎你的加入!
离线彩阳

只看该作者 9楼 发表于: 2016-01-23
如果对于编译和运行fcitx插件依然有困难,大家可以下载Qt Creator增强套装。这里包含了我已经编译好的插件。
上海Qt开发联盟,热忱地欢迎你的加入!
离线彩阳

只看该作者 10楼 发表于: 2016-01-23
上海Qt开发联盟,热忱地欢迎你的加入!
离线lizzzaaa

只看该作者 11楼 发表于: 2016-04-19
楼主在吗,我的qt5.3.1在ubuntu14.04 32位系统下变通用户能输入中文,但在root下输入不了,是按照你教的做了。这该怎么办呢
离线lizzzaaa

只看该作者 12楼 发表于: 2016-04-19
回 lizzzaaa 的帖子
lizzzaaa:楼主在吗,我的qt5.3.1在ubuntu14.04 32位系统下变通用户能输入中文,但在root下输入不了,是按照你教的做了。这该怎么办呢 (2016-04-19 10:57) 

输入法是搜狗拼音
离线彩阳

只看该作者 13楼 发表于: 2016-05-21
Qt Creator 4.0.0下再次无法使用搜狗输入法了。目前还没有比较好的方法能够解决这个问题,看来还要询问一下fcitx团队看如何得到解决了。
上海Qt开发联盟,热忱地欢迎你的加入!
离线misgn

只看该作者 14楼 发表于: 2017-09-04
回 彩阳 的帖子
彩阳:Qt Creator 4.0.0下再次无法使用搜狗输入法了。目前还没有比较好的方法能够解决这个问题,看来还要询问一下fcitx团队看如何得到解决了。 (2016-05-21 11:06) 

hdp@hdp-virtual-machine:~/fcitx-qt5$ make
[  0%] Built target fcitx-scan-addons.target
[  0%] Built target fcitx-modules.target
[  3%] Automatic MOC for target FcitxQt5DBusAddons
[  3%] Built target FcitxQt5DBusAddons_autogen
[  6%] Linking CXX shared library libFcitxQt5DBusAddons.so
CMakeFiles/FcitxQt5DBusAddons.dir/fcitxqtconnection.cpp.o: In function `FcitxQtConnectionPrivate::FcitxQtConnectionPrivate(FcitxQtConnection*)':
fcitxqtconnection.cpp:(.text+0x2bb): undefined reference to `vtable for FcitxQtConnectionPrivate'
CMakeFiles/FcitxQt5DBusAddons.dir/fcitxqtconnection.cpp.o: In function `FcitxQtConnectionPrivate::~FcitxQtConnectionPrivate()':
fcitxqtconnection.cpp:(.text+0x4e4): undefined reference to `vtable for FcitxQtConnectionPrivate'
collect2: error: ld returned 1 exit status
make[2]: *** [dbusaddons/libFcitxQt5DBusAddons.so.1.0] Error 1
make[1]: *** [dbusaddons/CMakeFiles/FcitxQt5DBusAddons.dir/all] Error 2
make: *** [all] Error 2
hdp@hdp-virtual-machine:~/fcitx-qt5$

为什么会出现这种情况呢?
快速回复
限100 字节
 
上一个 下一个