问题
ubuntu 系统中, 搜狗输入法使用了 fcitx 输入法框架, 但无论是 Qt Creator 还是 PyQt5, 默认都不支持 fcitx, 在 QLineEdit 和 QTextEdit等控件的输入框中无法切换为搜狗输入法
解决
直接安装预编译的库
sudo apt install fcitx-frontend-qt5
安装完成后, 系统中多出一个动态库 libfcitxplatforminputcontextplugin.so
ls /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
将该库拷贝到 Qt5/PyQt5 安装目录中的特定位置就可以解决问题
Qt Creator
对于 Qt Creator, 假设 Qt 安装于 /opt 目录下
则该位置为 /opt/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /opt/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
PyQt5
对于 PyQt5, 查看安装位置
pip3 show PyQt5
Name: PyQt5
Version: 5.15.2
Summary: Python bindings for the Qt cross platform application toolkit
Home-page: https://www.riverbankcomputing.com/software/pyqt/
Author: Riverbank Computing Limited
Author-email: info@riverbankcomputing.com
License: GPL v3
Location: /home/jianghuixin/.venv/Learn/lib/python3.8/site-packages
Requires: PyQt5-sip
Required-by:
具体位置为: “上述 Location 的位置/PyQt5/Qt/plugins/platforminputcontexts/”
拷贝动态库
cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/jianghuixin/.venv/Learn/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforminputcontexts/
对于 Qt Creator 和 PyQt5, 该特定位置的末尾路径都是 Qt/plugins/platforminputcontexts/, 对于 PySide2 解决方法应该也是类似的