Linux 下 Qt5 程序中文输入的问题
背景
- OS: Debian Buster x64
- Language: en_US.UTF-8
- Desktop: MATE Desktop 1.22.2
- Input: Fcitx v4.2.9.7
自从切换到 Debian Buster 后,发现使用 QT 的程序无法输入中文,如 libreOffice/WPS/wine(notepad/office 2007)。而其它没有使用QT的程序却可以正常进行中文输入,如 Firefox/VIM/Leafpad 等等。
解决方法
Baidu / Google 了半天,基本上老师添加环境变量或重新编译 fcitx-qt5。
而我使用下面第三种方法解决的问题。
一、在环境变量中指定输入法
设置环境变量,在 .bashrc
/.xprofile
/.xinputrc
/.profile
或写个脚本加入下面的变量。
1 | export GTK_IM_MODULE=fcitx |
二、源码编译 fcitx-qt5
理由是 Linux 官方仓库的 fcitx-qt5 太老旧,不兼容 QT5.6 以上的版本,需要在新版本的 QT 中重新编译它。
注:下面的步骤哪个也不要省略,否则可能在编译时会出现莫名的错误。
1、安装依赖
1 | :~$ sudo apt-get install cmake fcitx-libs-dev extra-cmake-modules |
2、安装 QT5 与 fcitx-qt5 源码
去Web - QT5 下载一个并安装在本地。
在这里我们下载 QT5.14.1 for linux 64-bits。
1 | :~$ wget http://download.qt.io/official_releases/qt/5.14/5.14.1/qt-opensource-linux-x64-5.14.1.run |
安装时它首先让我们在 QT网站 上注册一个帐户,之后的安装过程中还会遇到一个选择框,如果不知道安装哪个就全部安装上。
1 | :~$ git clone https://github.com/fcitx/fcitx-qt5 |
3、开始编译
1 | :~$ export PATH="/home/root/Qt5.14.1/5.14.1/gcc_64/bin":$PATH |
幸运的话,我们已经编译成功了,而这里我们需要libfcitxplatforminputcontextplugin.so
。
如果报错了,请自行Google解决。
4、覆盖原有模块
1 | :~$ mv /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so.old |
三、切换至中文语言环境
无意中我把语言环境变量修改了下,发现 fcitx 可以在 QT 程序下正常使用了!
下面拿LibreOffice 来举例:
1 | :~$ cat > office <<EOF |
写了个脚本,先将语言设置为中文,然后关闭现有的 fcitx,最后打开 fcitx 和 libreoffice,此时可以在 LibreOffice 中正常输入中文了。
为了保持自己的英文水平,所以不想切换回中文语言环境。只能将所需的 QT5 程序按照上面的方法都写了个脚本。
Prefences:
- CSDN
- fcitx
- qt web