qt5 の input method
DESCRIPTION
Qt5 の Input Method の概要。TRANSCRIPT
Qt5のInput Method朝木卓見
1
Qt4からQt5へ• Qt4では各プラットフォームでIMに(も)個別対応
• QPAによる抽象化
• QWidget依存からの脱却が必要
• デスクトップ全盛期はIMの重要度が低かった
• ユーザーが入力するだけ(アプリから制御出来ない)
• 旧APIは自由度・拡張性・抽象度が低い
• モバイルの躍進でIMへの需要が高まる
• アプリからの制御・アプリとの連携が必要に
2
Qt4のInput Method
Qt GUI
WindowsIMM32
Mac OS XNSTextInput
X11immodule
QWSQWSInputMethod
Application
QInputContext
QInputMethodEvent
scim ibus uim
QtGui
3
Qt4のAPI• Qt::WA_InputMethodEnabled
• QInputContext
• QInputMethodEvent
• QWidget::inputMethodQuery()
• QWidget::inputMethodHints (4.6)
• QEvent::RequestSoftwareInputPanel (4.6)
• QEvent::CloseSoftwareInputPanel (4.6)
IMの制御は4.6から
4
Qt5の主な変化
• QInputContextクラスを整理
• QPlatformInputContextとQInputMethodに分割
• システム向けとアプリ向け
• QWidget依存を取り除く
• アプリとの連携を視野に
5
QPlatformInputContext
• 各プラットフォームのInput MethodをQtにインテグレーションするためのクラス
• qtbase/src/platforms/*
• qtbase/src/plugins/platforminputcontexts/* (X11)
• QWidget非依存
• QPA用API
• 非アプリ向け
• ソース・バイナリ互換維持の対象外
6
QInputMethod
• アプリとInput Methodが連携するためのAPI
• http://qt-project.org/doc/qt-5.0/qtgui/qinputmethod.html
• show(), hide()
• keyboardRectangle()
7
InputMethodQuery
• Input Methodからアプリへの問い合わせ
• カーソル、フォント、サラウンドテキスト等
• Qt4
• QWidget::inputMethodQuery()
• Qt5
• QInputMethodQueryEvent
8
Qt5のInput Method
QPlatformAbstraction
Application
QPlatformInputContext
QInputMethodEvent QInputMethod
Mac OS XNSTextInput
Client
WindowsIMM32 ibus Mallit
9
Qt5のAPI• Qt::WA_InputMethodEnabled
• QPlatformInputContext (QPA API)
• QInputMethod
• QApplication::autoSipEnabled (Software Input Panel)
• QInputMethodEvent
• QInputMethodQueryEvent
• QWidget::inputMethodHints (値の追加あり)
• QEvent::RequestSoftwareInputPanel
• QEvent::CloseSoftwareInputPanel
10
Qt Quick 2
• inputMethodHintsプロパティの追加
• TextInput
• TextEdit
• Qt.inputMethodプロパティ
11
まとめ
• APIが大きく変更(主に以下のケースに影響)
• Input Methodを実装する場合
• 細かな制御が必要な場合
• 実装は?
• 要確認
12
参考文献
• Create proper input method abstraction and expose it through a public API in QTGui
• Expose new QInputPanel API as global property Qt.application.inputPanel
• http://qt-project.org/groups/qt-contributors-summit-2011/wiki/Input_methods_and_Wayland_in_Qt_5
• 注) QInputMethodはQInputPanelという名前でした
13