Qt5中文输入的问题

转载 2016年05月31日 00:08:19

一、前言

本博客是为了解决在Qt5.4和Qt5.5下的中文输入问题,博主所用的Qt版本是Qt5.5.1,中文输入法是搜狗输入法,操作系统是ubuntu 14.04

Qt5.3及以前的版本可以通过复制/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/下的libfcitxplatforminputcontextplugin.soQt5.3.1/5.3/gcc_64/plugins/platforminputcontexts
/Qt5.3.1/Tools/QtCreator/bin/plugins/platforminputcontexts 解决Qt下的中文输入问题,但是Qt5.4和Qt5.5,旧办法失效,原因是Qt5.4后对之前Qt5版本不再二进制兼容,libfcitxplatforminputcontextplugin.so 需要编译最新的fcitx-qt5。
博主编译的libfcitxplatforminputcontextplugin.so可以下载使用,但是要记得给这个文件可执行权限

参考lieefu的博客:
解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题

二、从源码编译fcitx-qt5

安装cmake和fcitx-libs-dev:

$ sudo apt-get install cmake
$ sudo apt-get install fcitx-libs-dev

根据Qt安装路径设置qmake的环境变量:

$ export PATH="/home/zjl/Qt5.5.1/5.5/gcc_64/bin":$PATH

github:fcitx/fcitx-qt5下载源码:

$ cd work/
$ git clone https://github.com/fcitx/fcitx-qt5

开始编译:

$ cd work/fcitx-qt5/
$ cmake .
$ make
$ sudo make install
  • 这时候会发现一个关于ECM的报错:
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

解压后编译安装:

$ cd work/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

如有如下报错:

CMake Warning at tests/CMakeLists.txt:28 (find_package):
  Could not find a package configuration file provided by "Qt5LinguistTools"
  with any of the following names:

    Qt5LinguistToolsConfig.cmake
    qt5linguisttools-config.cmake

  Add the installation prefix of "Qt5LinguistTools" to CMAKE_PREFIX_PATH or
  set "Qt5LinguistTools_DIR" to a directory containing one of the above
  files.  If "Qt5LinguistTools" provides a separate development package or
  SDK, be sure it has been installed.


-- Looking for Sphinx Documentation Builder...
-- Sphinx Documentation Builder not found - documentation will not be built (see http://sphinx-doc.org/)

按照报错提示将Qt5LinguistTools所在路径添加到环境变量CMAKE_PREFIX_PATH:

$ export CMAKE_PREFIX_PATH="/home/siat/Qt5.5.1/5.5/gcc_64/lib/cmake"
  • 关于XKBCommon的报错
-- 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")

解决办法是安装如下软件包:

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

这里需要注意的是lieefu的博客./configure 后面带参数的时候格式写错了,参数前缀是-- 而不是,另外运行./configure 需要cd libxkbcommon-0.5.0/ 文件夹。

装完上面这些之后再重新回到fcitx-qt5进行编译

$ cd work/fcitx-qt5/
$ cmake .
$ make
$ sudo make install

最终我们需要的libfcitxplatforminputcontextplugin.so 文件在/work/fcitx-qt5/platforminputcontext

三、替换libfcitxplatforminputcontextplugin.so 文件

接下来我们只需要将libfcitxplatforminputcontextplugin.so 复制到Qt5.5.1/Tools/QtCreator/bin/plugins/platforminputcontexts/Qt5.5.1/5.5/gcc_64/plugins/platforminputcontexts/ 即可。

为了方便操作,我们将libfcitxplatforminputcontextplugin.so 文件复制到主文件夹~/下,然后运行如下命令

$ cd Qt5.5.1/Tools/QtCreator/bin/plugins/platforminputcontexts/
$ sudo rm libfcitxplatforminputcontextplugin.so 
$ sudo cp ~/libfcitxplatforminputcontextplugin.so .
$ sudo chmod +x libfcitxplatforminputcontextplugin.so 


$ cd Qt5.5.1/5.5/gcc_64/plugins/platforminputcontexts/
$ sudo rm libfcitxplatforminputcontextplugin.so 
$ cp ~/libfcitxplatforminputcontextplugin.so .
$ sudo chmod +x libfcitxplatforminputcontextplugin.so 

注意不要漏掉了cp命令末尾的. 号,rm 命令是为了删除旧的libfcitxplatforminputcontextplugin.so ,另外还需要注意根据自己的Qt安装路径和版本确定platforminputcontexts 文件夹的路径

替换文件之后重新打开Qt就可以在里面Ctrl+空格切换搜狗中文输入法了

如果切换搜狗输入法之后还是无法输入中文就重启一下电脑(不知道为啥,博主的笔记本就是这类干啥都要重启或重开的,另一台台式机不过改啥改完之后不需要重启立马就能用,真是忧伤)

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Ubuntu 16.04中 Qt 5.6 中无法调用fcitx输入中文的问题

今天在安装了Ubunu后发现在Qt Creator中无法输入中文,这个问题不解决肯真就太难受...了 于是开始百度,找了半天,是了好几种方法,都没能成功 最后参考了这篇博文,找到了灵感http://b...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

解决Qt5.6无法使用输入法输入中文

最近在ubantu上使用Qt开发进行开发,遇到不能使用输入法输入中文的问题,有点头疼,于是百度谷歌双管齐下,查阅各方资料,综合各种解决方案,kill 了这个问题,在此做下笔记,也希望能够帮助到同样遇到...

解决ubuntu14.04下Qt 5.3.1 下的QtCreator fcitx,ibus不能输入中文

ubuntu 14.04从Qt官网下载的最新版qt,安装过程很顺利,但却发现没办法输入中文(我用的是 fcitx), 即使下载了fcitx-frontend-qt5和fcitx-frontend-qt...

Qt5.5.1 (Qt5.x) Creator 无法输入中文(fcitx,搜狗输入法)

参考: http://www.linuxdiyf.com/linux/17005.html http://zisxks.com/2013/11/29/compile-fcitx-qt5-in-Ubu...
  • logico
  • logico
  • 2016年03月18日 12:04
  • 2031

解决Qt5 Creator无法切换输入法(fcitx),不能录入汉字问题

笔者系统环境,Ubuntu 14.04,输入法fcitx下搜狗输入法。 其它非Ubuntu linux发行版,不通过软件源安装Qt5,从Qt官网http://qt-project.org/下载安...

新版QT creator下解决fcitx无法输入中文问题(QTcreatorV4.1.0)

Preface新版本的QT creatorV4.0.0之后,就QT creator结构本身就发生了很大的变化,许多文件路径以及结构都发生了较大的变化。因此,fcitx的qt5库位置也发生了变化,但是原...

彻底解决ubuntu14.04下,QT5.5版本之后不能输入中文注释的问题

首先说下机主的环境: 系统:ubuntu14.04.05, qt版本:QT5.7.0。(目前测试的是,5.5以后的版本是都可以解决问题的。) 转自:http://www.cnblogs.com/...

QT5.5移植到ARM全攻略

QT5.5移植
  • tracing
  • tracing
  • 2015年11月20日 20:58
  • 16106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt5中文输入的问题
举报原因:
原因补充:

(最多只允许输入30个字)