1.问题

    linux 环境下,qt应用程序文本输入控件如QLineEdit,无法切换中文输入法来输入中文;

2. 原因

   qt应用程序没成功加载到输入法插件。linux有两种输入法框架:fictx和ibus,对应的插件:

libfcitxplatforminputcontextplugin.so和libibusplatforminputcontextplugin.so; 

可使用: lsof -p pid 确认应用程序是否已加载对应的so:

3.解决

1)将系统目录下插件文件拷贝到qt应用程序运行目录下对应插件目录,如:

    系统目录: /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

    注: /usr/lib/x86_64-linux-gnu 根据架构名字不一样

    qt应用程序安装目录或运行目录(如果是应用程序带上qt库): ${PATH}/Qt512/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

    注:${PATH}/Qt512 是代指qt的目录    

2)给插件以执行权限,如:

      chmod +x libfcitxplatforminputcontextplugin.so 

3)如果是应用程序带上qt库, 运行时需设置环境变量的,则需设置一下

    export QT_QPA_PLATFORM_PLUGIN_PATH=${PATH}/Qt512/plugins/

4)重启qt应用程序。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐