blogPythonとかWSGIとかPasteな2009年5月28日qscintillaの日本語表示について(調査)PyQtも作っている英riverbankがscintillaをQt向けにポーティングしているQScintillaだが、いまいち日本語の使い勝手が悪い。UTF-8を使うように設定すれば、入力も表示もできるんだけど、変換中の表示が一切ない。なんでだろうと、ソースを調べてみると、inputMethodEventは実装されている。inputMethodQueryが実装されていない。inputMethodQueryは編集領域や編集中のフォント、などをInputContextに渡してあげるためのメソッド。これがないので、入力できるのに編集中の表示がないんだろう。QtのQLineEditやQTextEditがどうやってるのか調べたのだが、ソースを追っかけるのも一苦労。Q_Dマクロが至るところで使われていて、実装は、QLineEditPrivateとかQTextEditPrivateとかにあるのを知るまで一時間以上かかった。inputMethodQueryはオーバーライド可能なので、QScintillaのサブクラスで実装してあげればいいのかな。)Qt::InputMethodQueryが以下ImMicroFocus:ImFont:ImCursorPosition:ImSurroundingText:ImCurrentSelection:中で、switch文で振り分けて、QVariantでQFontやQRectFやQStringを返すような感じで...。1つのメソッドでやらなきゃいけないのかいまいち理解に苦しむ。ImFontはfont()メソッドで返しておけばいいんだろうけど、その他がなにを返せばいいものやら。QTextEditの実装方法を眺めてみる。あと、問題なのは描画メソッドの方でも、考慮するとこがあるっぽいところ。