Linux下Qt5无法输入中文解决办法

最近有个项目需要在Linux使用中文输入,但是发现Qt Creator以及Qt编译出来的程序无法使用搜狗输入法输入中文,一口老血,不过还好,最终在各种google、百度下得以解决,特此记录下这痛并快乐的时光。

Linux下输入中文需要fcitx输入法插件文件:libfcitxplatforminputcontextplugin.so

Qt5.4及以前的版本

使用dpkg查找插件文件,fcitx在fcitx-frontend-qt5中,没有就用sudo apt-get install fcitx-frontend-qt5命令安装。

$ dpkg -L fcitx-frontend-qt5 | grep .so
/usr/lib/aarch64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

解决Qt Creator无法输入中文,执行以下命令(Qt安装目录根据自己实际情况修改):

$ cd Qt安装目录/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
$ sudo cp /usr/lib/aarch64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ./
$ sudo chmod +x libfcitxplatforminputcontextplugin.so

解决Qt编译的程序无法输入中文,执行以下命令(Qt安装目录根据自己实际情况修改,我的为5.13.0):

$ cd Qt安装目录/5.13.0/plugins/platforminputcontexts
$ cp /usr/lib/aarch64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ./
$ chmod +x libfcitxplatforminputcontextplugin.so

Qt5.4以后的版本

由于apt-get install命令安装的fcitx-frontend-qt5版本太老,与Qt5.4以后的版本不兼容,所以需要重新编译fcitx-qt5。

1. 安装CMake,已安装可跳过

  • 命令安装
$ sudo apt-get install cmake
  • 源码安装:下载CMake V3.16.0源码包
$ tar zxvf CMake-3.16.0.tar.gz
$ cd CMake-3.16.0.tar.gz
$ ./configure或./bootstrap
$ sudo make
$ sudo make install

2. 安装fcitx-libs-dev

注:已安装可跳过(我是使用命令安装的,有兴趣的同学可以研究一下源码安装,要是能再指导一下我就更棒了)

  • 命令安装
$ sudo apt-get install fcitx-libs-dev

3. 编译fcitx-qt5

  • 下载fcitx-qt5源码
$ git clone [email protected]:fcitx/fcitx-qt5.git
  • 编译
$ export PATH="/usr/local/Qt5.13.0/bin":$PATH    //设置Qt的环境变量,Qt bin目录路径根据自己实际情况修改
$ cd /fcitx-qt5
$ sudo cmake .
$ sudo make
  • 拷贝libfcitxplatforminputcontextplugin.so
    编译完成后会在源码的platforminputcontexts目录下生成libfcitxplatforminputcontextplugin.so,将libfcitxplatforminputcontextplugin.so分别拷贝至以下目录(Qt安装目录根据自己实际情况修改,我的为5.13.0)
解决Qt Creator无法输入中文目录:Qt安装目录/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
解决Qt编译的程序无法输入中文目录:Qt安装目录/5.13.0/plugins/platforminputcontexts
  • 赋予插件libfcitxplatforminputcontextplugin.so执行权限
$ cd 到上面两个目录中
$ sudo chmod +x libfcitxplatforminputcontextplugin.so

4. 错误解决

  • 执行cmake .时出错

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!

解决办法
下载extra-cmake-modules_1.4.0.orig.tar.xz

$ tar xvf extra-cmake-modules_1.4.0.orig.tar.xz
$ cd extra-cmake-modules_1.4.0
$ sudo cmake .
$ sudo make
$ sudo make install

-- 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")

解决办法
下载libxkbcommon-0.5.0.tar.xz

$ tar xvf libxkbcommon-0.5.0.tar.xz
$ cd libxkbcommon-0.5.0
$ sudo ./configure —prefix=/usr —libdir=/usr/lib/x86_64-linux-gnu —disable-x11
$ sudo make
$ sudo make install

由于编译libxkbcommon需要用到yacc命令,没有这个命令会提示以下问题

YACC src/xkbcomp/parser.c
./build-aux/ylwrap: line 176: yacc: command not found
make: *** [src/xkbcomp/parser.c] Error 127

解决办法

  • 命令安装bison
$ sudo apt-get install bison
  • 源码安装bison
    下载bison-3.0.4.tar.gz
$ tar zxvf bison-3.0.4.tar.gz
$ cd bison-3.0.4
$ sudo ./configure
$ sudo make
$ sudo make install

你可能感兴趣的:(Linux下Qt5无法输入中文解决办法)