1.问题描述
问题描述: UOS系统x86架构QtCreator和QT应用程序无法输入中文,系统中文输入法正常使用。
系统版本: UOS桌面专业版 1043
QT版本: QT 5.15.11
2.问题分析
目前Linux上主流的输入法架构主要是fcitx和ibus,目前国产化系统大部分都是使用的fcitx架构,所以QT框架想要使用对应的输入法必须要提供对应的插件进行通讯,通过查看Qt的插件目录发现插件目录plugins/platforminputcontexts/下没有libfcitxplatforminputcontextplugin.so插件,这就是为什么QT的程序无法输入中文的原因。
3.解决办法
按照对应的Qt版本去编译这个库libfcitxplatforminputcontextplugin.so
3.1编译libfcitxplatforminputcontextplugin.so插件
3.1.1 安装编译依赖
sudo apt-get install -y cmake
sudo apt-get install -y extra-cmake-modules
sudo apt-get install -y libxkbcommon-x11-dev
sudo apt-get install -y libxkbcommon-dev
sudo apt-get install -y bison
3.1.2 下载fcitx-qt5源码
//从github下载源码
git clone http://github.com/fcitx/fcitx-qt5.git
3.1.3 配置qmake的环境变量
- (1)终端进入fcitx-qt5文件夹
- (2)输入 export PATH=/opt/Qt5.15.11/bin/:$PATH
3.1.4 执行编译安装
cmake .
make -j4
make install
编译完成以后会生成platforminputcontext文件夹,进入文件夹后会有已经编译完成的libfcitxplatforminputcontextplugin.so文件给这个文件赋予权限。
chmod 777 libfcitxplatforminputcontextplugin.so
3.1.5 拷贝文件到指定目录
将文件拷贝到QT安装目录/opt/qt5.15.11/plugins/platforminputcontexts和Qt Creator的/plugins/platforminputcontexts目录下,就能解决QT程序无法输入中文问题。
4.总结
1.Linux下QT程序无法输入中文问题,一般是缺少libfcitxplatforminputcontextplugin.so库导致的问题,如果存在插件库但是仍然无法输入中文,可通过ldd -d查看插件库依赖确认是否是库依赖有问题,想办法结解决库依赖的问题。
2.ARM架构UOS系统下的QT同样存在相同的问题,可用相同的方法解决。