一、前言
本博客是爲了解決在Qt5.4和Qt5.5下的中文輸入問題,博主所用的Qt版本是Qt5.5.1,中文輸入法是搜狗輸入法,操作系統是ubuntu 14.04
Qt5.3及以前的版本可以通過複製/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/
下的libfcitxplatforminputcontextplugin.so
到Qt5.3.1/5.3/gcc_64/plugins/platforminputcontexts
和/Qt5.3.1/Tools/QtCreator/bin/plugins/platforminputcontexts
解決Qt下的中文輸入問題,但是Qt5.4和Qt5.5,舊辦法失效,原因是Qt5.4後對之前Qt5版本不再二進制兼容,libfcitxplatforminputcontextplugin.so
需要編譯最新的fcitx-qt5。
博主編譯的libfcitxplatforminputcontextplugin.so可以下載使用,但是要記得給這個文件可執行權限
參考lieefu的博客:
解決Qt5 Creator無法切換輸入法(fcitx),Ubuntu中不能使用搜狗輸入法錄入漢字問題
二、從源碼編譯fcitx-qt5
安裝cmake和fcitx-libs-dev:
$ sudo apt-get install cmake
$ sudo apt-get install fcitx-libs-dev
根據Qt安裝路徑設置qmake的環境變量:
$ export PATH="/home/zjl/Qt5.5.1/5.5/gcc_64/bin":$PATH
從github:fcitx/fcitx-qt5下載源碼:
$ cd work/
$ git clone https://github.com/fcitx/fcitx-qt5
開始編譯:
$ cd work/fcitx-qt5/
$ cmake .
$ make
$ sudo make install
- 這時候會發現一個關於ECM的報錯:
CMake Error at CMakeLists.txt:8 (find_package):
Could not find a package configuration file provided by "ECM" (requested
version 1.4.0) with any of the following names:
ECMConfig.cmake
ecm-config.cmake
Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
to a directory containing one of the above files. If "ECM" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
到這個頁面 https://launchpad.net/ubuntu/+source/extra-cmake-modules/1.4.0-0ubuntu1 下載 extra-cmake-modules_1.4.0.orig.tar.xz
解壓後編譯安裝:
$ cd work/extra-cmake-modules-1.4.0/
$ cmake .
$ make
$ sudo make install
- 如果有如下報錯
CMake Error at /home/lieefu/Qt5.5.0/5.5/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message):
Failed to find "GL/gl.h" in "/usr/include/libdrm".
安裝如下包:
$ sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
如有如下報錯:
CMake Warning at tests/CMakeLists.txt:28 (find_package):
Could not find a package configuration file provided by "Qt5LinguistTools"
with any of the following names:
Qt5LinguistToolsConfig.cmake
qt5linguisttools-config.cmake
Add the installation prefix of "Qt5LinguistTools" to CMAKE_PREFIX_PATH or
set "Qt5LinguistTools_DIR" to a directory containing one of the above
files. If "Qt5LinguistTools" provides a separate development package or
SDK, be sure it has been installed.
-- Looking for Sphinx Documentation Builder...
-- Sphinx Documentation Builder not found - documentation will not be built (see http://sphinx-doc.org/)
按照報錯提示將Qt5LinguistTools所在路徑添加到環境變量CMAKE_PREFIX_PATH:
$ export CMAKE_PREFIX_PATH="/home/siat/Qt5.5.1/5.5/gcc_64/lib/cmake"
- 關於XKBCommon的報錯
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26")
-- Could NOT find XKBCommon_XKBCommon (missing: XKBCommon_XKBCommon_LIBRARY XKBCommon_XKBCommon_INCLUDE_DIR)
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find XKBCommon (missing: XKBCommon_LIBRARIES XKBCommon) (Required
is at least version "0.5.0")
解決辦法是安裝如下軟件包:
$ sudo apt-get install bison
$ cd work/
$ wget http://xkbcommon.org/download/libxkbcommon-0.5.0.tar.xz
$ tar xf libxkbcommon-0.5.0.tar.xz
$ cd libxkbcommon-0.5.0/
$ ./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --disable-x11
$ make
$ sudo make install
這裏需要注意的是lieefu的博客./configure
後面帶參數的時候格式寫錯了,參數前綴是--
而不是—
,另外運行./configure
需要cd libxkbcommon-0.5.0/
文件夾。
裝完上面這些之後再重新回到fcitx-qt5進行編譯
$ cd work/fcitx-qt5/
$ cmake .
$ make
$ sudo make install
最終我們需要的libfcitxplatforminputcontextplugin.so
文件在/work/fcitx-qt5/platforminputcontext
三、替換libfcitxplatforminputcontextplugin.so
文件
接下來我們只需要將libfcitxplatforminputcontextplugin.so
複製到Qt5.5.1/Tools/QtCreator/bin/plugins/platforminputcontexts/
和 Qt5.5.1/5.5/gcc_64/plugins/platforminputcontexts/
即可。
爲了方便操作,我們將libfcitxplatforminputcontextplugin.so
文件複製到主文件夾~/
下,然後運行如下命令
$ cd Qt5.5.1/Tools/QtCreator/bin/plugins/platforminputcontexts/
$ sudo rm libfcitxplatforminputcontextplugin.so
$ sudo cp ~/libfcitxplatforminputcontextplugin.so .
$ sudo chmod +x libfcitxplatforminputcontextplugin.so
$ cd Qt5.5.1/5.5/gcc_64/plugins/platforminputcontexts/
$ sudo rm libfcitxplatforminputcontextplugin.so
$ cp ~/libfcitxplatforminputcontextplugin.so .
$ sudo chmod +x libfcitxplatforminputcontextplugin.so
注意不要漏掉了cp
命令末尾的.
號,rm
命令是爲了刪除舊的libfcitxplatforminputcontextplugin.so
,另外還需要注意根據自己的Qt安裝路徑和版本確定platforminputcontexts
文件夾的路徑
替換文件之後重新打開Qt就可以在裏面Ctrl+空格切換搜狗中文輸入法了
如果切換搜狗輸入法之後還是無法輸入中文就重啓一下電腦(不知道爲啥,博主的筆記本就是這類幹啥都要重啓或重開的,另一臺臺式機不過改啥改完之後不需要重啓立馬就能用,真是憂傷)