FormsのLabelに日本語を使うには
-
Debian 9 Qt Creator4.7.2
Qt CreatorでForms作成時に、LabelのTextに日本語を使うにはどうすれば良いでしょうか?よろしく、お願いします。
-
Qt Creator4.7.2 を使用しているとの事ですので、
おそらくQt5系を使用されていると想定します。
また、WindowsでのVisutal Studioのコンパイラを使用しての動作を前提として回答します。Visual Studioでは、ソースコードの文字コードが、UTF-8か、シフトJISにかかわらずシフトJISに変換されてコンパイルされます。
たとえば、
void MainWindow::on_pushButton_clicked() { ui->labelSample->setText(tr("ラベル変更")); }
とCodeを書くと
のように文字化けするようです。
対策として、
- ソースコードの文字コードを、シフトJISの文字コードにする。
ソースコードの文字コードをUTF-8で記述しないといけない場合では、
- execution_character_setのpragmaを使用して、utf-8として設定する。
該当のソースコードに以下のCodeを付与します。
#pragma execution_character_set("utf-8")
- 文字列リテラルに"u8"プレフィックスを付ける。
void MainWindow::on_pushButton_clicked() { ui->labelSample->setText(tr(u8"ラベル変更")); }
いちどお試しあれ。
GitHubにサンプルコードをcommitしてみました。
こちらも参考にしてみてください。 -
KazuoAsanoさま
ご回答いただき、ありがとうございました。
私は、Windows10上でも、Qt5.2を使っているんですが、こちらは今まで何にも気にすることなく日本語を使っていましたが、この回、Linux Debina9上でQtを使おうとしたところ、Qt内ではまったく日本語が使えませんでした。
IMEが効かないのです。
他のアプリでは問題なく日本語変換できるのですが。
このあたりについての情報も少ないようなので、困っています。 -
Linux用Qt5.12の場合、国際化対応のため、プログラム内では日本語を使わず、QObject::tr()で囲み、別途tsファイルを生成するんですね。
一応解決しました。 -
Debina上でのQt Creator日本語入力は、ちょっとした対応が必要になりますが対応可能です。
iBus + Fcitxの場合、pluginがQt Creator内にありませんので
IME経由での日本語入力ができない状態です。https://github.com/fcitx/fcitx-qt5
にFcitx用のQt5 Input Contextがありますのでお試しあれ
CMakeでのbuildなので、あまりトラブルにならないと思いますがUbuntu 16.04LTSでのQtCreator日本語入力
のQiita記事を参照して頂くと、UbuntuもDebian系なので、迷わずInstallできると思います。
解決できれば、unsolved -> solved に変更して頂けると、たぶん閲覧されてる方が幸せになりますw
-
KazuoAsanoさま
貴重な情報をありがとうございます。
Debian9の場合、デフォルトのIMEはuimでした。
git clone と
apt-get install cmake ecm extra-cmake-modules fcitx-libs-dev をやってみたんですが
Qt Creatorのアイコンが消えたり、Debian全体でIMEが効かなくなったりと、少々手こずっています。
年末で、時間が取れないので、少し時間が掛かるかと思いますが、また報告させていただきます。 -
結果報告です
<テスト環境>
OS : Debian9 stretch
デスクトップ環境 : Gnome
日本語IME : uim
Qtバージョン : Qt5.12.0
インストールディレクトリ : /usr/local/bin/Qt<不具合内容>
参考URLの内容を実行すると
日本語IMEが、うまく効かない
fcitx-libs-devをインストールした時点で
インストール済みのQtCreatorのアイコンがアクティビティのダッシュボードから消えて、アプリケーション表示からも無くなってします。
インストールディレクトリにQtCreatorは有り、コマンドラインから実行出来るが、右クリックでダッシュボードへのお気に入り登録できない。<対策>
まず、参考URLにある apt-get install ecm は間違いで不要だと思います
Debian stretchの場合Ubuntuと違い、mozcがデフォルトではないので、fcitx-libs-dev の代わりに、fcitx-mozc を使えば日本語が使えるようになった。
アイコンが消える問題は、Qtを再インストールすればOK、他の方法は不明です。
fcitx-libs-devをインストールせず、fcitx-mozcだけインストールすれば、アイコンが消えないのか、未検証
Qtインストール前に、fcitx-mozcをインストールしておけば問題ないのか、未検証おかげさまで、Qtに日本語入力ができるようになりました。ありがとうございました。
-
@taku-s さん
解決できてよかったです!
よかったら、Replyの横に”Topic Tools"ボタンがあるのでunsolved -> solved に変更よろしく:) -
QtCreatorがアプリ一覧から消えてします件ですが
fcitx-lib-dev等は関係ありませんでした。
あくまで、OS Debian9 stretch インストールディレクトリ/usr/local/binとした場合ですが
インストールディレクトリへのパスが通っていないのが原因のようでした。
コマンドでの、qtcreator起動ができませんでした。
この状態でapt-get update等のコマンドを実行すると、アプリ一覧から消えてしまうようです。
ですので、検索パスを通すか、
/usr/local/bin/Qt/Tools/QtCreator/bin/qtcreatorのシンボリックシンクをパスの通ってい所に置き、
/usr/share/applications 或いは /usr/share/gmone/applications に作られている
DigiaQt-qtcreator-community.desktop 内の Exec = の内容をこのリンクに変更すればよいようです。