fcitx-qt5をインストールし,QtとQtCreatorで日本語入力

Ubuntu 16.04でQt 5.10.0とQtCreator 4.5.0でアプリケーションを開発をしている。

OSのパッケージマネージャーAPTでインストールできるものはバージョンが古いので,公式サイトのインストーラーからダウンロードしたものを使っている。

最新のバージョンのQtが使えて満足していたのだが,インストーラーからインストールした場合,QtCreatorで日本語が入力できず,このQtCreatorで作成したアプリケーションでも日本語を入力できないという問題があった。UbuntuでのIMEにはfcitxとmozcの組み合わせを使っており,日本語に入力を切り替えようとしても,切り替えられなかった。

今後の開発に大きな影響が出るためこの問題の対応方法を調べ,無事に解決できたのでその手順を記す。

この問題の対処方法は以下のページを参考にした。

どうやら,インストーラーからインストールした場合,plugins/platforminputcontexts/にlibfcitxplatforminputcontextplugin.soが欠如しているため,IMEの切り替えが機能しないらしい。

そこで,自分でlibfcitxplatforminputcontextplugin.soをビルドして,配置してやることで対応する。

インストール情報
項目 説明
配布元 fcitx/fcitx-qt5: Fcitx support for Qt5
依存関係 ECM, Fcitx
ビルド環境 Ubuntu 16.04
インストール手順
LOCAL=~/.local
PKG=fcitx-qt5

cd $LOCAL/src
git clone --depth 100 https://github.com/fcitx/$PKG cd $PKG VER=$(git tag | sed 's/^v//' | tail -n 1)
mkdir build; cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$LOCAL/stow/$PKG-$VER -DCMAKE_PREFIX_PATH=$LOCAL/opt/Qt/Qt5.10.0/5.10.0/gcc_64
make && make install stow -d $LOCAL/stow $PKG-$VER

インストール手順で重要なのが,9行目だ。ここで,現在使用しているQtを参照(今回は$LOCAL/opt/Qt/Qt5.10.0/にインストール済みと想定)している。ここで参照しないとmakeでエラーが出てしまう。

ビルドが完了したら,以下のコマンドで生成されたlibfcitxplatforminputcontextplugin.soをコピーして,QtCreatorの場所に配置してやればいい。

cp platforminputcontext/libfcitxplatforminputcontextplugin.so ~/.local/opt/Qt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

なお,以下のコマンドでplatforminputcontextsディレクトリーがどこにあるかを確認すると,以下の3箇所に存在していた。

cd ~/.local/opt/Qt/
find -name "platforminputcontexts"
./Qt5.10.0/5.10.0/gcc_64/plugins/platforminputcontexts
./Qt5.10.0/5.10.0/Src/qtbase/src/plugins/platforminputcontexts
./Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts

この内,gcc_64にはもともとlibfcitxplatforminputcontextplugin.soが存在しており,このライブラリーはQtCreatorにだけ不足していた。

不思議に思って,gcc_64配下に存在するlibfcitxplatforminputcontextplugin.soをQtCreatorのplatforminputcontextsにそのままコピーすれば,問題なく日本語が入力できた

一生懸命自分でビルドしていたが,そもそもそんなことしなくてもよかったようだ。配布元がQtCreatorのディレクトリーに格納するのを忘れているのかもしれない。

ひとまず解決できたのでよかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です