【QT】程序无法输入中文 QLineEdit输入框无法切换输入法

目录

  • 0、环境
  • 一、问题描述
  • 二、解决思路
  • 三、步骤描述

0、环境

linux + qt

一、问题描述

测试软件在运行时无法通过键盘快捷键切换中文输入法,主要原因为qt应用程序没成功加载到输入法插件。

本文的以测试程序demo为例,进行过程展示,demo名字为“test-chinese-lineedit”。

原本环境(自带输入法)执行测试程序demo时,无法用键盘快捷键【ctrl+spec】切换成中文输入法,见下图。

注:
运行demo可执行程序步骤:进入demo文件夹中,打开终端,输入./test-chinese-lineedit

【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第1张图片

二、解决思路

  1. 安装【搜狗拼音输入法】;
  2. 将系统下语言支持库插件【libfcitxplatforminputcontextplugin.so】复制到qt程序运行目录下对应插件目录;

三、步骤描述

  1. 前提:搜狗输入法安装包,博主下载版本为:【sogoupinyin_4.0.1.2800_x86_64.deb】

    搜狗输入法deb包下载地址:
    https://shurufa.sogou.com/linux

  2. 安装搜狗输入法
    1)下载搜狗输入法deb包后,在此路径执行sudo dpkg -i +包名,执行命令后会提示输入密码。第一次安装搜狗输入法时,会有错误提示,见下图。包【fcitx-ui-qimpanel】与搜狗安装包有冲突,需要将【fcitx-ui-qimpanel】卸载后再次安装搜狗输入法。
    【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第2张图片
    2)卸载包【fcitx-ui-qimpanel】。在终端执行sudo apt-get remove fcitx-ui-qimpanel,执行后会再次确认是否继续执行,输入【y】即可继续执行,见下图。
    【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第3张图片
    卸载完成,见下图。
    【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第4张图片
    3)再次安装搜狗拼音安装包,终端执行命令sudo dpkg -i +搜狗拼音包名,此时无报错,安装成功,见下图。
    【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第5张图片
    注:安装后需重启系统,可在终端使用reboot命令重启。重启后可以在右上角菜单栏看到搜狗输入法的界面,证明搜狗输入法安装成功,见下图。
    【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第6张图片

  3. 将系统下语言支持库插件复制到qt程序运行目录下对应插件目录,步骤为:
    1)打开终端用超级用户执行命令:
    sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /opt/Qt5.12.10/5.12.10/gcc_64/plugins/platforminputcontexts/
    见下图。
    此步骤为了让qt应用程序加载输入法插件。Linux有两种插件:fictx和ibus,分别对应库【libfcitxplatforminputcontextplugin.so】和库【libibusplatforminputcontextplugin.so】,搜狗输入法使用的是前者。
    【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第7张图片
    2)进入运行目录下,给插件执行权限。终端执行cd /opt/Qt5.12.10/5.12.10/gcc_64/plugins/platforminputcontexts/进入运行目录;
    再执行sudo chmod +x libfcitxplatforminputcontextplugin.so
    即可。

  4. 至此,搜狗输入法已配置完成。
    用普通用户执行demo,(步骤为:进入demo文件夹输入./ test-chinese-lineedit,见下图。
    在这里插入图片描述

此时可以使用【ctrl+spec】切换中文输入法并输入中文,见下图。
【QT】程序无法输入中文 QLineEdit输入框无法切换输入法_第8张图片
参考:
https://blog.csdn.net/yjianlu/article/details/121043286

你可能感兴趣的:(Qt,qt,linux,ubuntu)